讓我們考慮下表-
ID Score 1 95 2 100 3 88 4 100 5 73
我是一個十足的 SQL 菜鳥,但如何傳回包含 ID 2 和 4 的分數? 因此它應該回傳 100,因為它同時出現在 ID 2 和 4 中
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
是唯一一列。
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”的分數。