我想增加表中子组的序列号,但如果子组不存在则序列应以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;
问题在于上述情况并不适用于初始案例。
答案 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 )
功能