首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检索包含和排除特定键的列表?

如何检索包含和排除特定键的列表?
EN

Stack Overflow用户
提问于 2017-06-29 23:51:32
回答 2查看 37关注 0票数 0

我有一个类似这样的表,我需要在其中过滤关键字并检索关键字列表。

代码语言:javascript
运行
复制
id key
1   1
1   2
1   3
1   4
2   1
2   3
3   1
3   4
4   1
4   4

所需输出:

代码语言:javascript
运行
复制
id key
2   1
2   3
3   1
3   4

这里我想得到一个id列表,即(2,3),其中键1存在,而键2缺失。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-29 23:57:33

这回答了被问到的问题:“这里我想获得一个id列表……其中键1存在,键2缺失。”

您可以使用existsnot exists

代码语言:javascript
运行
复制
select t.*
from t
where exists (select 1 from t t2 where t2.id = t.id and t2.key = 1) and
      not exists (select 1 from t t2 where t2.id = t.id and t2.key = 2);

如果您只需要ids,那么我更喜欢聚合和having

代码语言:javascript
运行
复制
select id
from t
group by id
having sum(case when key = 1 then 1 else 0 end) > 0 and
       sum(case when key = 2 then 1 else 0 end) = 0;
票数 1
EN

Stack Overflow用户

发布于 2017-06-30 00:21:21

假设您的表名为‘the’,那么根据您提到的输出,sql查询将是

SELECT * FROM testing WHERE key !=2,id in (2,3)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44829854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档