所以我需要做的是选择列的最大值(并且每次增加1)并且如果该值为null(这将是第一次出现的情况)我必须返回常量0(其中将是下一次出现的最大值。)
我的目标是做这样的事情:
SELECT (Max(id) + 1) FROM my_table WHERE id IS NOT NULL
UNION
SELECT 0 FROM my_table WHERE id IS NULL
然而,这不起作用。我该怎么办?
答案 0 :(得分:1)
试试这个
SELECT COALESCE(Max(id + 1), 0) FROM my_table WHERE id IS NOT NULL
答案 1 :(得分:1)
编写查询的方式,它将返回两行。一个用于第一个查询,一个用于联合。
如果您只需要一行,则可以使用MAX()函数。如果表为空,则MAX()函数返回null。您有一个选项是在select语句中使用COALESCE(),它返回第一个非null值。换句话说,这个查询:
SELECT COALESCE(MAX(id) + 1, 0) AS maxID
FROM myTable;
可以解释为:给我表中的最大ID。如果表是空的,只需返回0。
这是一个fiddle示例,其中包含一个空表和一个非空表。
答案 2 :(得分:0)
SELECT (MAX(CASE WHEN id IS NULL THEN 0 ELSE id END) + 1) FROM my_table