首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查表中是否存在特定的元组

检查表中是否存在特定的元组
EN

Stack Overflow用户
提问于 2011-11-07 05:41:42
回答 3查看 11.2K关注 0票数 3

有没有办法检查where-in语句中的表中是否存在特定的元组?

类似于:

代码语言:javascript
复制
create table Test(A int, B int);

insert into Test values (3, 9);
insert into Test values (6, 7);
insert into Test values (7, 6);
insert into Test values (3, 4);

select A, B
from Test
where (B, A) in Test;

预期输出:

代码语言:javascript
复制
6|7
7|6
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-07 05:53:54

因此,将Test加入到自身:

代码语言:javascript
复制
select t1.A, t1.B
from Test t1
join Test t2 on t1.A = t2.B and t1.B = t2.A

或者使用交叉点:

代码语言:javascript
复制
select A, B from Test
intersect
select B, A from Test

不过,自连接可能会更快。

票数 3
EN

Stack Overflow用户

发布于 2011-11-07 05:51:13

你太接近了,"in“子句的后半部分必须是select...所以

代码语言:javascript
复制
SELECT A,B
FROM Test
WHERE (B,A) IN (SELECT B,A FROM Test);

测试( in )必须在相同的字段(或字段类型)中

票数 7
EN

Stack Overflow用户

发布于 2011-11-07 06:05:09

当您在数据库的上下文中以这种方式使用单词"tuple“时,您可能会感到困惑,因为单词"tuple”在数据库理论中也有一个正式的定义,这与您的问题中隐含的集合论定义不同。

如果您正在尝试识别不需要的元组,您可以尝试这种方法:

代码语言:javascript
复制
SELECT t1.A, t1.B From Test t1 JOIN Test t2 ON t1.A=t2.B AND t1.B=t2.A WHERE t1.A > t1.B
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8030624

复制
相关文章

相似问题

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