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

Bas*_*ani 5 sql sqlite default subquery max

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

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

update order set class=5, sequence=(select max(sequence) from order 
where class=5)+1 where order_id=104;
Run Code Online (Sandbox Code Playgroud)

问题是以上对初始案例不起作用.

mvp*_*mvp 7

在这些情况下,功能COALESCE()非常方便:

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

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