SELECT DISTINCT
`A/C#` AS `A/C#`,
`MyRef` AS `MyRef`,
DATEDIFF('2017-06-30', `Date`) AS `Days`,
`Dr` - `Cr` AS `Balance`
FROM
`BERNIE`.`answer`
GROUP BY
`A/C#`,
`MyRef`
ORDER BY
BINARY `A/C#`,
BINARY `MyRef`,
`Days`,
`Balance`
SELECT列表的表达式#3不在GROUP BY子句中,并且包含未聚合的列'bernie.answer.Date',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by
不兼容通过在GROUP BY中包含Date
,Dr
和Cr
可以消除错误。
我得到了GROUP BY的东西(也许是..),但这看起来很极端吗?
更新:
将已计算字段(Days
和Balance
的别名添加到GROUP BY也会消除该错误。现在我更困惑了。
答案 0 :(得分:1)
完全删除GROUP BY。在这种情况下不合适,因为没有聚合。
答案 1 :(得分:0)
您可以通过执行以下操作来尝试禁用only_full_group_by设置:
mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
OR
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));