mySQL:1055 user.fieldName不是';分组

mySQL:1055 user.fieldName不是';分组,mysql,mysql-error-1055,Mysql,Mysql Error 1055,我有一个旧的SQL查询: SELECT GROUP_CONCAT(DISTINCT groups.groupID ORDER BY groups.groupID ASC SEPARATOR ',') AS groupIDs, GROUP_CONCAT(DISTINCT languages.languageID ORDER BY languages.languageID ASC SEPARATOR ',') AS languageIDs, user_option.*, u

我有一个旧的SQL查询:

SELECT 
    GROUP_CONCAT(DISTINCT groups.groupID ORDER BY groups.groupID ASC SEPARATOR ',') AS groupIDs,
    GROUP_CONCAT(DISTINCT languages.languageID ORDER BY languages.languageID ASC SEPARATOR ',') AS languageIDs,
    user_option.*, user.*
FROM user user
LEFT JOIN user_to_groups groups ON (groups.userID = user.userID)
LEFT JOIN user_to_languages languages ON (languages.userID = user.userID)
LEFT JOIN user_option_value user_option ON (user_option.userID = user.userID)
WHERE user.userID = 1 GROUP BY user.userID
在新服务器上,我遇到以下错误: 1055 user.fieldName不在GROUP BY中

我怎样才能重写这个查询呢?当我将所有字段分组时,它是有效的。但是我可以在动态表中添加字段,这样我就不能按组列出所有字段


感谢您的帮助

也许问题出在别名
用户上
?试着使用smth,比如用户user1中的
,并在下面的文本中将
user
更改为
user1
。这种问题是设计不良的症状。在正确设计的环境中,行是动态的,列不是动态的。您可以在新服务器上关闭唯一的\u FULL\u GROUP\u BY sqlmode,使其行为类似于5.7更新之前的MySQL,默认情况下,这是打开的。一般来说,我强烈建议编写更好的SQL,但您已经尝试了动态列反模式,因此关闭sqlmode可能比修复不太好的模式更容易。谢谢。这是一个来自其他软件的非常古老的查询。所以我不能重写整个软件。一次更改后仅禁用\u FULL\u GROUP\u。对但给出了重写此查询的简单方法?动态不是100%正确的抱歉。有了管理控制面板,我可以添加用户选项,并有更多的字段。所以我总是发现一个新的错误不在分组中