【发布时间】:2019-04-15 13:42:42
【问题描述】:
我对自更新 MySQL-5.7 以来记录错误的 MySQL 查询有疑问。 错误是“only_full_group_by”,它将在stackoverflow上说出来。
在许多答案中都声明不要禁用此选项,而是改进您的 sql 查询。
我正在使用的查询是每小时返回一个计数器的最小值和最大值。
SELECT MAX( counter ) AS max,
MIN( counter ) AS min,
DATE_FORMAT(date_time, '%H:%i') AS dt
FROM table1
WHERE date_time >= NOW() - INTERVAL 1 DAY
GROUP BY YEAR(date_time), MONTH(date_time), DAY(date_time), HOUR(date_time)
据我从错误消息中了解到,我在 GROUP BY 原因中缺少 SELECT 原因中的一项。但是,但是我恢复/删除/添加项目我没有得到升级到 MySQL-5.7 之前的结果。
我尝试对主查询进行子查询以改进 SQL 查询。但不知何故,我无法重新创建结果。
我错过了什么?
【问题讨论】:
-
DATE_FORMAT(date_time, '%H:%i')将是不确定的,因为您只分组到hour级别;因此它可以返回该小时内的任何一分钟,因此会出现错误。 -
我尝试删除“分钟”部分 (%i),但随后我完全失去了数据集的真实顺序。结果显示从 00 到 23 的时间顺序,但结果应按实际 date_time 排序并从现在开始(例如 20:00),例如:20、21、22、23、00 .... 19, 20
-
你能设置一个db-fiddle.com