我有一个包含用户 ID 和奖励 ID 的表 用户可以获得不同的奖励或没有奖励。我设置的查询返回获得 1、2、3 或 4 奖的所有用户。我只想返回获得所有 4 个奖项的用户。
这是我目前的情况
SELECT ID
FROM awards
WHERE AID in (1,2,3,4)
再次返回每个人,我需要它返回包含所有这些人的 ID。我只是对SQL很陌生
最佳答案
您可以使用 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
子句中(这确实有效并且可能更容易记住,但最有效的是为你)=]
关于mysql - 选择等于多个数字的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128114/