檢索具有相同列值的 MySql 行
P粉464088437
P粉464088437 2023-11-10 21:53:39
0
2
851

讓我們考慮下表-

ID Score
1  95

2  100

3  88

4  100

5  73

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

P粉464088437
P粉464088437

全部回覆(2)
P粉237029457
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粉933003350

這是「集合內集合」查詢的範例。我建議使用 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”的分數。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板