如何返回在MySQL中具有相同列值的行

如何返回在MySQL中具有相同列值的行

让我们考虑下表-


ID Score

1  95


2  100


3  88


4  100


5  73

我完全是一个SQLNoob,但是如何返回ID 2和4的分数呢?所以它应该返回100,因为它在ID 2和4中都有它的功能。


紫衣仙女
浏览 726回答 3
3回答

一只萌萌小番薯

这是一个“集内集”查询的示例。我建议使用having子句,因为它是最灵活的方法。select scorefrom tgroup by scorehaving sum(id = 2) > 0 and -- has id = 2        sum(id = 4) > 0     -- has id = 4这是在用分数来聚合。然后是having条款(sum(id = 2)计算出每分有多少个“2”。第二个是数多少“4”。只返回“2”和“4”的分数。

跃然一笑

SELECT scoreFROM tWHERE id in (2, 4)HAVING COUNT(*) = 2 /* replace this with the number of IDs */这将选择ID 2和4的行。这个HAVING子句确保我们找到了这两行;如果两者都缺少,计数将小于2。这假设id是一个独特的列。

慕村9548890

select Scorefrom tbl awhere a.ID = 2 -- based off Score with ID = 2     --include Score only if it exists with ID 6 also     and exists (         select 1         from tbl b        where b.Score = a.Score and b.ID = 6     )     -- optional?  ignore Score that exists with other ids as well     and not exists (         select 1         from tbl c        where c.Score = a.Score and c.ID not in (2, 6)     )
打开App,查看更多内容
随时随地看视频慕课网APP