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 - 分组不工作的主要内容,如果未能解决你的问题,请参考以下文章