MySQL 5.7 - 分组不工作

Posted

技术标签:

【中文标题】MySQL 5.7 - 分组不工作【英文标题】:MySQL 5.7 - group by with having not working 【发布时间】:2017-01-08 13:34:22 【问题描述】:

我正在使用 mysql 5.7 并且有以下查询:

SELECT 
    U.*,
    C.country,
    C.id AS country_id,
    C.iso
FROM 
    `users` AS U
LEFT JOIN
    `countries` AS C
ON 
    U.user_country_id = C.id
WHERE
    U.user_deleted = 0
GROUP BY
    U.user_country_id
HAVING 
    MAX(U.user_credits)

问题是:

未捕获的 PDOException:SQLSTATE[42000]:语法错误或访问冲突:1055 SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含在功能上不依赖于 GROUP 中的列的非聚合列“dbname.U.id” BY 子句;

我无法将我的组(错误结果)更改为:GROUP BY U.user_country_id, U.id

如何以正确的方式更改我的请求? 谢谢!

【问题讨论】:

你想获取 user_credits = max(user_credits) 的行吗? 表的方案是什么,你想得到什么?您是否考虑过将 group by 放入嵌套查询中? 【参考方案1】:

你可以通过这种方式获取max(U.user_credits)的行

SELECT 
    U.*,
    C.country,
    C.id AS country_id,
    C.iso
FROM 
    `users` AS U
LEFT JOIN
    `countries` AS C
ON 
    U.user_country_id = C.id
WHERE
   U.user_deleted = 0
AND   U.user_credits = ( select max(U.user_credits) from `users` as U)

【讨论】:

您的查询只返回一行。 @user889349 。当然..如果您需要不同的解决方案,请更新您的问题,添加适当的数据样本和预期结果..

以上是关于MySQL 5.7 - 分组不工作的主要内容,如果未能解决你的问题,请参考以下文章

如何对连续范围进行分组(mysql 5.7)

在 MySQL 5.7 中对“孤岛”进行分组

MySQL 重启后不工作

MySQL 重启后不工作

Mysql 5.7 安装及备份

浅析MySQL使用 GROUP BY 分组聚合与细分聚合