我正在刷新我的SQL知识,我遇到了一个应该处理错误的例子。我正在使用MySQL。
SQL语句是这样的:
SELECT price, COUNT(*) As num_products
FROM product
我得到了这样的结果:
preco count(*
100 9
为什么这种简单的柱子和骨料混合使用?
您的查询使用聚合函数,这意味着您的查询返回一组数据。因此,此查询的行为类似于使用GROUP BY语句的查询。如果在这些情况下禁用ONLY_FULL_GROUP_BY模式,MySQL将不会出错。官方文件说:
如果查询具有聚合函数且没有GROUP BY子句,则在选择列表,HAVING条件或ORDER BY列表中启用ONLY_FULL_GROUP_BY时,它不能包含非聚合列:
您可以在the official documentation中获得有关此行为的更多信息