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)将返回nullmax聚合函数将自动跳过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提供的很棒的工具!再次感谢您的支持!我的案子