MySQL不能在串联列上使用ORDER BY

时间:2019-06-02 13:12:58

标签: mysql

我正在研究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

不兼容

1 个答案:

答案 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