我正在研究mySQL。
我必须使用'ORDER BY F"
(这是家庭作业),但不能。
如何修改我的代码?
SELECT CONCAT(F,' ', L,' ') name, COUNT(R) NumOfR
FROM E join d ON E.S1 = d.S2
WHERE R ='a' OR R = 'b'
GROUP BY name
ORDER BY F;
错误代码:1055。ORDER BY子句的表达式#1不在GROUP BY中 子句,并包含非汇总列“ c.E.F” 功能上取决于GROUP BY子句中的列;这是 与sql_mode = only_full_group_by
不兼容
答案 0 :(得分:1)
从MySQL 5.7.5开始,默认的SQL模式包括ONLY_FULL_GROUP_BΥ
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by
拒绝选择列表,具有HAVING条件或ORDER的查询 BY列表是指未在列中未命名的非聚合列 GROUP BY子句也不在功能上依赖于(唯一确定 by)GROUP BY列。
所以您应该
ORDER BY name
等效于按F排序,因为名称是F和L的串联结果。
OR
ORDER BY ANY_VALUE(F)
告诉MySQL它可以使用每个名称组中的任何F值
https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value