我是一个MySQL查询noobie,所以我确信这是一个明显的答案。MySQL Group By和HAVING
但是,我正在看这两个查询。他们会返回不同的结果集?我知道排序过程会以不同的方式开始,但我相信他们会返回相同的结果,而第一个查询的效率稍高一点。
查询1:HAVING,然后与
SELECT user_id
FROM forum_posts
GROUP BY user_id
HAVING COUNT(id) >= 100
AND user_id NOT IN (SELECT user_id FROM banned_users)
查询2:式中,然后将具有
SELECT user_id
FROM forum_posts
WHERE user_id NOT IN(SELECT user_id FROM banned_users)
GROUP BY user_id
HAVING COUNT(id) >= 100
太好了,谢谢!有趣的是,我将不得不运行一些测试。我认为效率更高,因为在分组之后比较NOT IN banned_users部分的记录比较少,如果这是有道理的。 – kimmothy
是的,该条件将仅在分组之前根据结果分组进行测试,而不是全部分组。 – aorcsik
@ kimmothy:'NOT IN'中的子查询确实只需要执行一次。 – a1ex07