mysql - 选择等于多个数字的结果

标签 mysql sql

我有一个包含用户 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/

相关文章:

mysql - 使用另一个远链接表中存在的条件更新表中的行

java - 数据库表架构建议

sql - Postgres 字符串数组的唯一约束/索引

sql - 使用 IF NOT EXISTS 生成插入脚本

mysql - 将新的 NOT NULL 列添加到包含数据的现有表中

sql - 如何获取任何给定报告服务器上可用的报告列表?

mysql - SQL 包含相关表中 id 不存在的结果

mysql - 如何从一个表筛选的两个相关表中获取数据?

mysql - 无法更改列并将其设为外键

sql - 将多个表连接到桥接表,同时保留两侧数据(包括 NULL)