从5.7.21
升级到mysql 5.7.20
后,出现错误
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
答案 0 :(得分:0)
您的查询无效。你告诉DBMS:"每ac.vatcode_id
给我ac.vatcode_type
"。并且DBMS告诉您每ac.vatcode_type
没有 ac.vatcode_id
;可以有多个不同的。那你想要哪个?最大值?然后制作此MAX(ac.vatcode_type)
。最低?然后将其MIN(ac.vatcode_type)
。你不在乎哪个?然后制作此ANY_VALUE(ac.vatcode_type)
。
您的新MySQL版本更严格,并希望您编写符合SQL标准的有效查询。这是一件好事。