2014-01-07 35 views
0

我需要执行更新查询,其中我根据计数查询的结果设置值。如果计数不返回任何结果,我想将状态设置为1,否则我想将状态设置为2使用条件表达式更新设置语句

这是我尝试不工作:

UPDATE TABLE_1 SET status = ((select count(1) from TABLE_2) > 0 ? 1 : 2) 

而且,我m在mybatis xml文件中做这件事,所以如果我在mybatis中可以做一些魔术,那也可以。

+0

想要设置table_1中的每一行与table_2具有相同(已解码)的计数吗?或者你也想加入这些表格? (从table_2得到count where some_id = table_1.some_id) – tbone

回答

2

Hope DECODE帮助你!但是状态中的所有行都使用相同的值更新..你想要那样吗?

UPDATE TABLE_1 SET status = (select DECODE(count(1),0,2,1) from TABLE_2); 
+0

不错的一个。 +1使用'DECODE'。几乎忘了这个存在' - ) – Mureinik

+0

谢谢,工作完美 –