搜索

首页  >  问答  >  正文

检索具有相同列值的 MySql 行

让我们考虑下表-

ID Score
1  95

2  100

3  88

4  100

5  73

我是一个十足的 SQL 菜鸟,但是如何返回包含 ID 2 和 4 的分数? 因此它应该返回 100,因为它同时出现在 ID 2 和 4 中

P粉464088437P粉464088437456 天前889

全部回复(2)我来回复

  • P粉237029457

    P粉2370294572023-11-11 20:57:58

    SELECT score
    FROM t
    WHERE id in (2, 4)
    HAVING COUNT(*) = 2 /* replace this with the number of IDs */

    这将选择 ID 为 2 和 4 的行。然后,HAVING 子句确保我们找到了这两行;如果其中一个缺失,计数将小于 2。

    这假设 id 是唯一列。

    回复
    0
  • P粉933003350

    P粉9330033502023-11-11 10:43:35

    这是“集合内集合”查询的示例。我建议使用 having 子句进行聚合,因为它是最灵活的方法。

    select score
    from t
    group by score
    having sum(id = 2) > 0 and -- has id = 2
           sum(id = 4) > 0     -- has id = 4

    这所做的是按分数聚合。然后 having 子句的第一部分 (sum(id = 2)) 计算每个分数有多少个“2”。第二个是数“4”的个数。仅返回“2”和“4”的分数。

    回复
    0
  • 取消回复