我想为表中的子组增加一个序列号,但如果子组不存在,那么序列应该从 1 开始:
例如,在下面,如果表中不存在任何记录,我们希望将序列设置为 1 class=5
;如果存在这样的记录,则序列应取值 max 序列(在子组中class=5
)+ 1:
update order set class=5, sequence=(select max(sequence) from order
where class=5)+1 where order_id=104;
问题是上述不适用于初始情况。
在这些情况下,函数COALESCE()
非常方便:
UPDATE order
SET class = 5,
sequence = coalesce(
(SELECT max(sequence)
FROM order
WHERE class=5),
0
) + 1
WHERE order_id = 104
COALESCE
大多数其他 SQL 引擎(MySQL、Postgres 等)都支持它的另一个好处……
只需用IFNULL( QUERY, 0 )
函数包围您的查询