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获取带有一些空字段的范围之间的最大值_Sqlite_Null_Max_Ignore - Fatal编程技术网

SQLite获取带有一些空字段的范围之间的最大值

SQLite获取带有一些空字段的范围之间的最大值,sqlite,null,max,ignore,Sqlite,Null,Max,Ignore,我有一个表,两列和一些行: c1 | c2 -------- 10 | 90 11 | 89.5 12 | 89 13 | 87 14 | null 15 | 86 我想得到c2列的最大值,但只在c1的值12和15之间 我尝试: SELECT MAX(IFNULL(c2, 0)) AS max_value FROM mytable WHERE data BETWEEN 12 AND 15 但不起作用。是否有忽略空值的方法?“max()聚合函数返回组中所有值的最大值。最大值是在同

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

c1 | c2

--------

10 | 90

11 | 89.5

12 | 89

13 | 87

14 | null

15 | 86
我想得到c2列的最大值,但只在c1的值12和15之间
我尝试:

SELECT MAX(IFNULL(c2, 0)) AS max_value FROM mytable WHERE data BETWEEN 12 AND 15
但不起作用。是否有忽略空值的方法?

“max()聚合函数返回组中所有值的最大值。最大值是在同一列上按顺序最后返回的值。当且仅当组中没有非空值时,聚合max()才会返回空值。”-

假设您没有负数,并且不希望NULL为0,您可以简单地使用

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

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

max聚合函数将自动跳过null值,因此以下查询应该可以:

SELECT MAX(c2) FROM tablename WHERE c1 BETWEEN 12 AND 15;
请看小提琴。我知道你的情况

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

WHERE c1 BETWEEN 12 AND 15

为什么它不起作用?MAX()将自动跳过空值,
从tablename中选择MAX(c2),其中c1介于12和15之间应该是fine如果我使用:从mytable中选择MAX(c2)作为MAX_值,我希望查询返回89。。。我得到“”。看起来NULL是最大值。请查看此小提琴。。。它返回正确的89
,其中12到15之间的数据正确吗?c1在12和15之间时不应该是
?也许这就是问题所在你说得对!很抱歉,我的代码中有错误,字段设置为“”,因此表中与Chrome资源中没有明显的差异。查询可以工作,只需在查询中添加c2不是“”的位置即可工作。所以是的。。。正确的答案是:你确定字段为空吗?!我的错误是,代码写的是“”,而不是null。我认为它是空的,因为Chrome资源与显示“”和空字段没有区别。是我的错。无论如何,谢谢你。知道这个查询是正确的,我发现了这个bug。sqlfiddle.com提供的很棒的工具!再次感谢您的支持!我的案子