在字母表列中列出不同的值,其中应从列表中删除仅具有RID 101的所有字母表.
RID | Alphabet |
---|---|
100 | A |
101 | B |
102 | B |
101 | C |
104 | D |
101 | D |
106 | E |
102 | F |
108 | C |
108 | A |
104 | E |
输出列应为
Alphabet |
---|
A |
E |
F |
因为A、B和C已经摆脱了101,应该被淘汰.
我该如何做到这一点呢? 我试过用有功能的Group By吗?哪里存在,但不为我工作?感谢你的帮助
在字母表列中列出不同的值,其中应从列表中删除仅具有RID 101的所有字母表.
RID | Alphabet |
---|---|
100 | A |
101 | B |
102 | B |
101 | C |
104 | D |
101 | D |
106 | E |
102 | F |
108 | C |
108 | A |
104 | E |
输出列应为
Alphabet |
---|
A |
E |
F |
因为A、B和C已经摆脱了101,应该被淘汰.
我该如何做到这一点呢? 我试过用有功能的Group By吗?哪里存在,但不为我工作?感谢你的帮助
尝尝这个
SELECT Alphabet FROM `mytable` WHERE Alphabet NOT IN (
SELECT Alphabet FROM `mytable` WHERE RID = 101
)
根据您的新信息,您的解决方案可能会因为使用HAVING MAX(when case...)
而成为性能杀手.但以Rating.rID
为指数,下面的解决方案将非常有效:
Select Movie.title From Movie
Left Join Rating on Rating.mID = Movie.mID
Left Join Reviewer on Rating.rID = Reviewer.rID
WHERE Movie.mID NOT IN (
SELECT Rating.mID FROM Rating WHERE Rating.rID = 205
)
GROUP BY Movie.mID