SQLite得到MAX值BETWEEN范围与一些空字段

时间:2014-03-23 09:36:51

标签: sqlite null max ignore

我有一个表,两列有些行:

c1 | c2

--------

10 | 90

11 | 89.5

12 | 89

13 | 87

14 | null

15 | 86

我想得到列c2的MAX值,但只能得到c1&#39的值12和15 我试着用:

SELECT MAX(IFNULL(c2, 0)) AS max_value FROM mytable WHERE data BETWEEN 12 AND 15

但没有工作。有没有办法忽略空值?

2 个答案:

答案 0 :(得分:1)

“max()聚合函数返回组中所有值的最大值。最大值是在同一列的ORDER BY中最后返回的值。聚合max()仅返回NULL如果组中没有非NULL值。“ - http://sqlite.org/lang_aggfunc.html

假设您没有否定,并且您不希望NULL为0,您只需使用

即可
SELECT MAX(c2) AS max_value FROM mytable ...

如果c2的所有行都为null,则max(c2)将返回null

答案 1 :(得分:1)

MAX聚合函数将自动跳过空值,因此以下查询应该没问题:

SELECT MAX(c2) FROM tablename WHERE c1 BETWEEN 12 AND 15;

请参阅小提琴here。我看到你的状况在哪里

WHERE data BETWEEN 12 AND 15

您确定要将WHERE子句应用于正确的列吗?我认为您需要将其更改为:

WHERE c1 BETWEEN 12 AND 15