- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
6天前关闭。
社区在6天前审查了是否重新讨论此问题,并将其关闭:
原始关闭原因未解决
Improve this question
我有一个表tbl
,我想从中提取一些数据的计数。
简而言之,我有两个选择:
select count(if(c10=7,1,null)) as recordCount
from tbl
where cId in (
select max(cId)
from tbl
group by c37
);
以及
select count(*) as recordCount
from (
select max(cId)
from tbl
where c10 = 7
group by c37
) t1;
第一个查询返回151,第二个查询返回156。
为什么这两个查询的结果不同?
1条答案
按热度按时间bvjveswy1#
在英语中--对于c37的每个分组,从与这些ID匹配的记录中选择具有最大ID的一个--如果c10 = 7,则对其进行计数
在英语中,对于c37和c10的每一个分组,取最大id,计算它们。
我写上面的内容是为了试着弄清楚查询在做什么。然后我看到了下面描述的问题。
至于你的问题,除非你考虑到max(cID)在第二个中可以为空,但在第一个中不能为空,否则数字的不同是没有意义的。-〉你可以在表中的一行中为空,但在使用IN语句时不能为空。
要显示这种情况,请运行以下查询
我希望你能坐到后面四排。
要使两个查询获得相同的结果,请对第二个查询使用以下命令