Rufen Sie MySQL-Zeilen mit demselben Spaltenwert ab
P粉464088437
P粉464088437 2023-11-10 21:53:39
0
2
842

Betrachten wir die folgende Tabelle-

ID Score
1  95

2  100

3  88

4  100

5  73

Ich bin ein absoluter SQL-Neuling, aber wie kann ich einen Score zurückgeben, der die ID 2 und 4 enthält? Es sollte also 100 zurückgeben, da es sowohl in ID 2 als auch in 4 vorkommt

P粉464088437
P粉464088437

Antworte allen(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”的分数。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage