错误代码:1055 与 sql_mode=only_full_group_by 不兼容

2024-01-31

我在切换到 Lahman 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。

Regards

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误代码:1055 与 sql_mode=only_full_group_by 不兼容 的相关文章

随机推荐