当前位置: 首页 > 知识库问答 >
问题:

选择列表包含未聚合的列

彭展
2023-03-14

自从更新MySQL以来,我注意到以下查询失败

SELECT u.*, p.name as plan, COUNT(u.id) as totalprojects FROM users u LEFT JOIN plans p ON p.id = access LEFT JOIN maps m ON m.user_id = u.id WHERE u.email = 'john@doe.com'

在没有分组依据的聚合查询中,选择列表的表达式#1包含未聚合列“kontakt”。u、 id';这与sql\u mode=only\u full\u group\u by不兼容

有人知道如何修复此查询以对错误进行排序吗?

共有3个答案

商绍元
2023-03-14

您可以执行以下两种操作之一:

1) 更改查询,以便聚合select子句中的所有内容。像这样的

SELECT u.email, p.name as plan, COUNT(u.id) as totalprojects FROM users u LEFT JOIN plans p ON p.id = access LEFT JOIN maps m ON m.user_id = u.id WHERE u.email = 'john@doe.com' group by u.email;

2)更改sql模式以允许mysql运行您的查询。像这样的东西

[mysqld]
sql_mode = "NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

在你的我。cnf文件。

请注意,这将设置各种sql_模式选项。您可以在此处阅读有关它们的信息:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

胡致远
2023-03-14

在我的Node服务器与数字海洋的会议文件,我需要编辑位于/etc/mysql/mysql.conf.d/mysqld.cnf

添加以下内容

[mysqld] sql_mode = "NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

然后,service mysql restart修复了这个问题。

宋明亮
2023-03-14

最简单的解决方案是ANY_VALUE功能:ANY_VALUE官方留档

SELECT name, ANY_VALUE(address), MAX(age) FROM t GROUP BY name;
 类似资料: