SQL - 选择增量值或返回常量

时间:2015-04-14 14:33:43

标签: mysql sql select null union

所以我需要做的是选择列的最大值(并且每次增加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

然而,这不起作用。我该怎么办?

3 个答案:

答案 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