【发布时间】:2018-03-14 11:55:54
【问题描述】:
从5.7.20升级到mysql 5.7.21后出现错误
SELECT ac.vatcode_id,ac.vatcode_type,v.name vatcode_name,v.txt vatcode_txt
FROM `accounting` ac
LEFT JOIN `vatcode` v ON v.id=ac.vatcode_id
WHERE ac.account_id=300479 && ac.vatcode_id>=0 && ac.time BETWEEN 1514764800 AND 1546214400 && ac.block_id=4431
GROUP BY ac.vatcode_id
#1055 - SELECT 列表的表达式 #2 不在 GROUP BY 子句中,并且包含非聚合列 'dynaccount.ac.vatcode_type' 在功能上不依赖于 GROUP BY 子句中的列;这是 与 sql_mode=only_full_group_by 不兼容
# show variables;
sql_mode
STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
【问题讨论】:
-
好吧,至少 DBMS 现在告诉你你的查询是无效的 SQL,这是一个很大的改进,不是吗?您按
ac.vatcode_id分组,但您的数据库不能保证每个ac.vatcode_id只有一个ac.vatcode_type。 -
我不明白 :) 如何解决?