sql - 在另一列中选择具有特定条目的 ID
问题描述
抱歉,如果这存在于另一个问题中,但我无法找到它。说我有一张桌子
ID Type
1 A
1 A
4 A
1 A
1 A
2 A
2 B
3 A
3 A
3 B
4 A
1 A
4 A
我想为所有行条目选择在 Type 列中只有条目“A”的 id。预期输出应该是:
ID
1
4
我试图这样做
select id
from table
order by id
having Type = 'A'
但没有得到预期的结果。
解决方案
聚合是一种方法,但您的HAVING
子句需要更改:
SELECT ID
FROM yourTable
GROUP BY ID
HAVING MIN(Type) = 'A' AND MIN(Type) = MAX(Type); -- sargable HAVING clause
演示
子句中的MIN
/MAX
相等检查HAVING
确保任何给定的匹配ID
在整个表中只有一个值。第一个MIN
断言确保这个值是A
。
推荐阅读
- vue.js - Emmet for VS Code with Vue, 'wrap with abbreviation' 移除缩进
- reactjs - 如何使 koa 服务器与具有反应路由器的 SPA 一起使用
- swift - Swift:设置 Int 变量时添加字符串字符
- maximo - Maximo:为自定义应用程序创建报告功能
- python - Python 3.8.2 | 为什么我的输入不接受我的答案,即使它是有效的?(功能)
- python - 使用雪花火花连接器得到空指针异常
- python - 我无法修复此错误。如何解决这个问题?谢谢
- shopware - 在 shopware 6 中添加自定义产品列表 CMS 块
- spring-boot - 当我尝试将对象从 jpa 存储库添加到列表时出现 NullPointerException
- android - 如何使我的应用程序与更多版本的 android 兼容?