在字母列中列出不同的值,其中所有仅具有 RID 101 的字母应从列表中删除。
摆脱 | 字母表 |
---|---|
100 | A |
101 | 乙 |
102 | 乙 |
101 | C |
104 | D |
101 | D |
106 | E |
102 | F |
108 | C |
108 | A |
104 | E |
输出列应为
字母表 |
---|
A |
E |
F |
因为 A、B 和 C 的 RID 101 应该被淘汰。
我该如何实现? 我试过使用 Group by 有功能吗?哪里存在但对我不起作用?感谢您的帮助
试试这个
SELECT Alphabet FROM `mytable` WHERE Alphabet NOT IN (
SELECT Alphabet FROM `mytable` WHERE RID = 101
)
我该如何实现?我尝试将
与group by
一起使用having
是的。您可以只使用
GROUP BY
字母(满足 distinct 要求),并使用 HAVING
子句排除那些具有禁止 RID 的字母:
select alphabet
from mytable
group by alphabet
having max(case when rid = 101 then 1 else 0 end) = 0
根据你的数据库,可能还有其他方式来表达
HAVING
谓词;例如,在支持布尔聚合的 Postgres 中:
having bool_and(rid != 101)