我一直在切换到拉曼SQL棒球数据库的脱机版本时遇到问题。我正在使用嵌入到EDX课程中的终端。此命令在Web终端上运行良好:

SELECT concat(m.nameFirst,concat(" ",m.nameLast)) as Player,
    p.IPOuts/3 as IP,
    p.W,p.L,p.H,p.BB,p.ER,p.SV,p.SO as K,
    p.IPOuts+p.W*5+p.SV+p.SO-p.BB-p.L-p.H as PTS,
    p.yearID as Year
FROM Pitching p
Inner Join Master m
    ON p.playerID=m.playerID
WHERE p.yearID=2014 AND p.IPOuts>=50
GROUP BY m.playerID
ORDER BY PTS DESC;


它正在运行SQL 5.5.46,但是当我使用运行5.7.10的脱机版本时,出现以下错误代码:


  错误代码:1055。SELECT列表的表达式#1不在GROUP BY中
      子句,其中包含未汇总的列“ stats.m.nameFirst”,即
      在功能上不依赖于GROUP BY子句中的列;这是
      与sql_mode = only_full_group_by不兼容


我一直在阅读许多解决人们问题的解决方案,但在这种情况下它们没有帮助。这是以前从未发生过的,所以我认为这要么非常明显,要么我对编码很满意。无论如何,有人知道如何解决这个问题吗?

最佳答案

在5.7中,sqlmode默认设置为:

 ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION


要删除子句ONLY_FULL_GROUP_BY,您可以执行以下操作:

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));


假设您需要使用非聚合列来创建该GROUP BY。

问候

关于mysql - 错误代码:1055与sql_mode = only_full_group_by不兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55431335/

10-09 01:28