一尘不染

SQL查询未显示预期结果

mysql

所以我创建了一个集成脚本,但是由于某种原因它没有显示出正确的结果。我的查询是

SELECT xf_user_group_relation.user_id, xf_user_group_relation.user_group_id, MAX( xf_user_group.display_style_priority ) AS display_style_priority
FROM xf_user_group_relation
INNER JOIN xf_user_group ON xf_user_group_relation.user_group_id = xf_user_group.user_group_id
WHERE xf_user_group.display_style_priority >=1000
GROUP BY user_id

结果中出乎意料的一行之一是这个

user_id | user_group_id | display_style_priority    
86 | 11 |5200

ID为11的组具有display_style_priority 2000而不是5200。它应显示具有display_style_priority
5200的用户组ID。这是该用户所在的排名最高的组。有人可以指出我做错了什么。


阅读 211

收藏
2020-05-17

共1个答案

一尘不染

尝试将GROUP BY更改为

GROUP BY
   xf_user_group_relation.user_id, xf_user_group_relation.user_group_id

其他大多数DBMS都会对该查询抛出错误,因为SELECT列表中的每一列都必须聚合或在GROUP BY中。

编辑:这是为什么ANSI-SQL和其他RDBMS不允许使用此语法的一个很好的例子

2020-05-17