mysql - 如何根据同一列中的两个条件进行过滤
问题描述
我想要 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 )
解决方案
使用聚合:
select sno
from tablename
group by sno
having min(level) = 5836 and min(level) = max(level);
推荐阅读
- java - 如何通过验证来验证一个类的数组?
- ruby-on-rails - 捆绑安装错误安装 nokogiri (1.6.7.2)。Gem 安装但不适用于 rails 应用程序
- python - [RobotFramework][selenium] 浏览器打开不工作
- qtp - 为什么 Page.GetTOProperty ("index") 返回高得离谱的值,而空值是正确的值?
- sql-server - MSSQL 搜索数据库表和视图
- python - Python制表格式只有一个浮点列
- c - 有效指针的可能值是多少?
- sql - msaccess 上的每月清单
- reactjs - 如何使用 highcharts-react-official 创建极坐标图?
- php - 使用php标头重定向到网站的根目录