基本上这就是我所拥有的:
insert into A values(1689, 1709);
insert into A values(1709, 1689);
insert into A values(1782, 1709);
insert into A values(1911, 1247);
insert into A values(1247, 1468);
insert into A values(1641, 1468);
insert into A values(1316, 1304);
insert into A values(1501, 1934);
insert into A values(1934, 1501);
insert into A values(1025, 1101);
如您所见,此处有2个值可供使用。我们称他们为a和b(a,b)。
我需要创建的是一个查询,条件是column1
中不得存在b。
我对此有点新意,所以在我尝试的很多事情中,这看起来就像是最接近的答案,但它并没有完成这项工作。
SELECT
a.*
FROM
A as a
LEFT JOIN
B AS b ON b.column = a.column
WHERE
B.column IS NULL
答案 0 :(得分:2)
假设我理解您的问题,一种选择是使用NOT EXISTS
:
select col2
from A A1
where not exists (
select 1
from A A2
where A1.col2 = A2.col1
)
这将返回col2
中不存在的所有col1
条记录。
答案 1 :(得分:1)
SELECT COL1, COL2 FROM A WHERE
COL1 NOT IN (SELECT DISTINCT COL2 FROM A)
答案 2 :(得分:0)
您的原始查询有正确的想法,名称与您的描述不符。
select a1.*
from A a1
left join A a2
on a2.b = a1.a
where a2.b is null;