You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL查询某日期返回空结果,另一日期正常问题排查

问题原因与解决方案

首先,咱们直接揪出核心问题:你的子查询里漏掉了GROUP BY子句,这才导致了查询结果的异常。

为什么会出现这种现象?

当你在SELECT语句中同时使用聚合函数(比如SUM(i_count))和非聚合字段(DATE(interval_start)),但没有指定GROUP BY时,MySQL在未开启ONLY_FULL_GROUP_BY模式的情况下,不会报错,而是随机返回一条数据的非聚合字段值,同时计算整个表的聚合结果。

看你的表数据,第一条记录的interval_start日期是2020-10-08,所以子查询返回的date_time刚好是这个值,外层查询过滤'2020-10-08'时就能匹配到;但当你查询2020-10-09时,子查询返回的date_time还是随机取的某条(大概率是2020-10-08的),自然就匹配不到,返回空结果。

解决方案

只需要在子查询中添加GROUP BY DATE(interval_start),让MySQL按日期分组计算每天的i_count总和,这样外层查询就能正确过滤到目标日期的数据了。

修正后的SQL如下:

SELECT * FROM ( 
    SELECT SUM(i_count), DATE(interval_start) as date_time 
    FROM rv_data_reports s 
    GROUP BY DATE(interval_start) -- 按日期分组,这是关键
) e where date_time = '2020-10-09';

另外,你也可以简化写法,去掉子查询,直接先过滤日期再分组,效率更高:

SELECT SUM(i_count), DATE(interval_start) as date_time 
FROM rv_data_reports s 
WHERE DATE(interval_start) = '2020-10-09'
GROUP BY DATE(interval_start);

额外建议

建议开启MySQL的ONLY_FULL_GROUP_BY模式(这是MySQL 5.7及以上版本的默认配置),它会强制要求聚合查询必须明确分组字段,避免这种隐性的随机结果问题,让SQL逻辑更严谨。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 15:02:31