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

Aco*_*orn 2 sql sqlite tuples where-in

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

就像是:

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;
Run Code Online (Sandbox Code Playgroud)

预期产量:

6|7
7|6
Run Code Online (Sandbox Code Playgroud)

Fra*_*Man 6

你非常接近,"in"条款的后半部分必须是一个选择......所以

SELECT A,B
FROM Test
WHERE (B,A) IN (SELECT B,A FROM Test);
Run Code Online (Sandbox Code Playgroud)

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


mu *_*ort 3

这样连接Test到自身:

select t1.A, t1.B
from Test t1
join Test t2 on t1.A = t2.B and t1.B = t2.A
Run Code Online (Sandbox Code Playgroud)

或者使用交叉点:

select A, B from Test
intersect
select B, A from Test
Run Code Online (Sandbox Code Playgroud)

不过,自加入可能会更快。