Sqlite:如果result为null,则设置max子查询的默认值

时间:2013-02-16 06:58:18

标签: sql sqlite subquery default max

我想增加表中子组的序列号,但如果子组不存在则序列应以1开头:

例如,在下文中,如果表中没有class=5的记录,我们希望序列设置为1;如果存在这样的记录,那么序列应该取值max sequence(在子组class=5中)+ 1:

update order set class=5, sequence=(select max(sequence) from order 
where class=5)+1 where order_id=104;

问题在于上述情况并不适用于初始案例。

2 个答案:

答案 0 :(得分:7)

在这些情况下,函数COALESCE()非常方便:

UPDATE order
SET class = 5,
    sequence = coalesce(
        (SELECT max(sequence)
         FROM order 
         WHERE class=5),
        0
    ) + 1
WHERE order_id = 104

大多数其他SQL引擎支持COALESCE的另一个好处 - MySQL,Postgres等......

答案 1 :(得分:4)

使用IFNULL( QUERY, 0 )功能

围绕您的查询

http://www.sqlite.org/lang_corefunc.html#ifnull