Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite:如果结果为空,则为max子查询设置默认值_Sql_Sqlite_Subquery_Default_Max - Fatal编程技术网

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

Sqlite:如果结果为空,则为max子查询设置默认值,sql,sqlite,subquery,default,max,Sql,Sqlite,Subquery,Default,Max,我想为表中的子组增加一个序列号,但如果子组不存在,则序列应以1开始: 例如,在下面的示例中,如果表中不存在class=5的记录,我们希望将sequence设置为1;如果存在此类记录,则序列值应取最大序列值(在子组class=5)+1: 问题是上述方法对于初始情况不起作用。只需使用IFNULL(query,0)函数围绕查询即可 在这些情况下,功能非常方便: UPDATE order SET class = 5, sequence = coalesce( (SELECT ma

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

例如,在下面的示例中,如果表中不存在
class=5的记录,我们希望将sequence设置为1;如果存在此类记录,则序列值应取最大序列值(在子组
class=5
)+1:


问题是上述方法对于初始情况不起作用。

只需使用
IFNULL(query,0)
函数围绕查询即可


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

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等。

hm,这值得一提,因为添加了“与大多数人一起工作”功能。。。我的awfull self总是在谷歌上搜索“NVL SQL引擎名称备选方案”;-)
UPDATE order
SET class = 5,
    sequence = coalesce(
        (SELECT max(sequence)
         FROM order 
         WHERE class=5),
        0
    ) + 1
WHERE order_id = 104