33

我想了解当属性为 NULL 时如何使用 MAX 函数设置属性的 0 值。例如:

Name columns:
number - date

Values:
10 - 2012-04-04
11 - 2012-04-04
12 - 2012-04-04
13 - 2012-04-15
14 - 2012-06-21
 1 - 2013-07-04

数字是增量字段,但在新年到来时将自己设置为1。但结果:

SELECT (MAX(number)+1) number WHERE date LIKE "2014%" 

是 NULL 而不是 1,因为 MAX(number) 是 NULL 而不是 0

4

2 回答 2

54

好吧,因为没有像 2014 年这样的日期,所以你会期望 null,因为没有任何东西的最大值实际上是没有任何东西的。

但是这样做:

COALESCE(MAX(number),0)

这意味着:从下一个列表中获取第一个非空的东西,所以如果你max是空的,它会给你0

于 2012-04-16T10:10:32.810 回答
29

COALESCE 有效,但IFNULL对我来说似乎更清楚。

IFNULL(MAX(number), 0)

如果第一个表达式不为 NULL,则 IFNULL() 返回表达式本身,否则返回第二个参数。IFNULL() 返回一个数字或字符串值,具体取决于使用它的上下文。

于 2014-10-24T11:28:00.800 回答