sql - 需要为 sql server 中的列检查多个条件
问题描述
我有一张桌子测试:
ID 名称
1 Imp
1 Critical
2 Imp
2 NA
3 NA
3 NAN
现在我想做 3 个查询:
第一个需要找到具有 Ony Imp 但不重要的 ID:
预期输出:
ID 名称
2 Imp
2 NA
第二需要找到同时具有 Imp 和 Critical 的 ID
预期输出:
ID 名称
1 Imp
1 关键
第三需要找到既没有 Imp 又没有 critical 的 ID
预期输出:
3 无
3 南
我试过:
select * from test where name not in ('imp','critical')
但它也给了我 ID 2。
我试图在我的查询中添加 IN 和 Not IN 但不知何故它没有给我正确的输出。
解决方案
您可以使用 EXISTS 和 NOT EXISTS 子句,如下所示:
测试条件的表变量:
DECLARE @test TABLE (id INT, name VARCHAR(10))
INSERT INTO @test VALUES (1, 'Imp'), (1, 'Critical'), (2, 'Imp'), (2, 'NA'), (3, 'NA'), (3, 'NAN')
案例 1 - 在一种情况下存在,在另一种情况下不存在。
SELECT * FROM @test t
WHERE EXISTS (SELECT * FROM @test WHERE id = t.id AND name = 'Imp')
AND NOT EXISTS (SELECT * FROM @test WHERE id = t.id AND name = 'critical')
退货
2 Imp
2 NA
案例 2 - 在两种情况下都存在
SELECT * FROM @test t
WHERE EXISTS (SELECT * FROM @test WHERE id = t.id AND name = 'Imp')
AND EXISTS (SELECT * FROM @test WHERE id = t.id AND name = 'critical')
退货
1 Imp
1 Critical
案例 3 - 在两种情况下都不存在
SELECT * FROM @test t
WHERE NOT EXISTS (SELECT * FROM @test WHERE id = t.id AND name = 'Imp')
AND NOT EXISTS (SELECT * FROM @test WHERE id = t.id AND name = 'critical')
退货
3 NA
3 NAN
推荐阅读
- go - 为什么会有这样的结果?
- css - 对其他样式组件的引用不起作用
- java - 如何让 IntelliJ 使用它构建的 Maven 配置文件运行 Spring Boot 应用程序?
- javascript - react.js npm包无法解析
- javascript - 执行不会超过第二次 fetch 调用(与 Gatsby 相关的东西)
- python-3.x - 以固定大小保存绘图
- r - 在 ggplot2 中向 DotPlot 添加均值和胡须
- r - 将具有来自全局环境的信息的函数应用于列表
- css - 如何改变 Ant design Tooltip 宽度
- java - JMS 和 JDBC 之间是否需要单独的事务管理器?