选择等于多个数字的结果

时间:2014-09-30 18:57:56

标签: mysql sql

我有一张包含用户ID和奖励ID的表格 用户可以获得不同的奖励或没有奖励。我设置的查询返回所有拥有奖励1,2,3或4的用户。我想只返回拥有所有4个奖项的用户。

这是我到目前为止所拥有的

SELECT ID
FROM awards
WHERE AID in (1,2,3,4)

这又回到了所有人,我需要它才能返回包含所有这些内容的ID。我对SQL

非常不熟悉

1 个答案:

答案 0 :(得分:4)

您可以使用GROUP BY按照用户ID分组结果,然后使用HAVING子句计算每个结果的数量;如果任何只有计数匹配4,则让它返回:

SELECT
    ID
FROM
    awards
WHERE
    AID IN (1, 2, 3, 4)
GROUP BY
    ID
HAVING
    COUNT(ID) = 4

如果可以多次授予具有相同奖励的用户,则您需要更新HAVING以解决此问题:

HAVING
    COUNT(DISTINCT AID) = 4

如果没有,则第一个例子应该没​​问题。

另一种方法是在你的AND AID = x条款中添加一长列WHERE条件(这绝对有效,可能更容易记住,但对你最有效)=]