select users.name,users.user_id,COUNT(subscribers.user_id)
from users
LEFT JOIN subscribers
ON subscribers.to_id = users.user_id;
它提供错误In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column users.name; this is incompatible with sql_mode=only_full_group_by
我有两种可能的解决方案
GROUP BY users.user_id,users.name
其固定;但是因为我
在mysql<中写了我的应用程序5.7我必须改变很多
查询(这是一场噩梦)。我可以关闭sql_mode=only_full_group_by
。
但我不知道这是不是一种坏习惯?是否有任何关闭only_full_group_by
的帮助。 ?性能明智哪个更好?
答案 0 :(得分:1)
从我的观点来看,最好解决问题并解决它们。即纠正应用程序中存在的不正确的查询。因为这些查询不正确,所有列都没有被不可预测的值正确地包含在组中。 (基本上是随机的...第一个遇到的人)..当然,应用程序的大小也有重要的作用,因此要纠正的查询量...这可能会导致正确的任务调度..然后一个受控制的时期你可以选择交换sql_mode ..用于我对性能没有明显影响的检查