SQL 查询未显示预期结果

Posted

技术标签:

【中文标题】SQL 查询未显示预期结果【英文标题】:SQL Query not showing expected result 【发布时间】:2011-10-02 07:17:17 【问题描述】:

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

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

结果中出乎意料的一行是this

user_id | user_group_id | display_style_priority    
86 | 11 |5200

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

【问题讨论】:

【参考方案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 不允许这种语法

【讨论】:

以上是关于SQL 查询未显示预期结果的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询未返回预期结果

SQL 查询未按预期给出结果

ASP.NET SQL 查询未返回预期结果

SQL NOT EXISTS 子查询未按预期运行

具有限制和偏移量的 CodeIgniter sql 查询未显示结果

Gmail REST API 线程搜索未给出预期结果