gpt4 book ai didi

Sqlite:如果结果为空,则为最大子查询设置默认值

转载 作者:IT王子 更新时间:2023-10-29 06:27:37 25 4
gpt4 key购买 nike

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

例如,在下面,如果 class=5 的表中不存在记录,我们希望将 sequence 设置为 1;如果存在这样的记录,那么sequence应该取值max sequence (in the subgroup 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 等......

关于Sqlite:如果结果为空,则为最大子查询设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14907843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com