首页 > 解决方案 > 如何根据同一列中的两个条件进行过滤

问题描述

我想要 sno 其中 level 单独是 5836,如果 sno 有多个级别,即使它有 5836,也必须忽略它。

斯诺 水平
1 5836
1 5838
2 5838
2 5836
3 5836
4 5838
5 5836

预期产出

斯诺 水平
3 5836
5 5836

这是我尝试过的,但我认为逻辑不起作用

with T1 as
(
SELECT id, levels
from tablename
)
select id
from T1
where levels = 5836 and levels <> 5838

[dbfiddle] ( https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=9cc0b0e8a42fb181754ccca7a40d774b )

标签: mysqlsql

解决方案


使用聚合:

select sno
from tablename
group by sno
having min(level) = 5836 and min(level) = max(level);

推荐阅读