搜尋

首頁  >  問答  >  主體

檢索具有相同列值的 MySql 行

讓我們考慮下表-

ID Score
1  95

2  100

3  88

4  100

5  73

我是一個十足的 SQL 菜鳥,但如何傳回包含 ID 2 和 4 的分數? 因此它應該回傳 100,因為它同時出現在 ID 2 和 4 中

P粉464088437P粉464088437449 天前880

全部回覆(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
  • 取消回覆