我们说我有一个只有一列的表t1:id
,我有一个包含两列的表t2:id
和Memo
。我需要从t1中选择那些id
,其中t2中没有满足以下两个条件t1.id = t2.id
和t2.Memo = 'myText'
的行。我怎样才能做到这一点?我尝试过使用join
,但选择满足某些条件的行,而我则需要相反。
答案 0 :(得分:1)
SELECT *
FROM t1
WHERE NOT EXISTS (SELECT 1
FROM t2
WHERE t2.id = t1.id
AND t2.Memo = 'myText')
答案 1 :(得分:0)
一种方法是使用LEFT JOIN
:
select id
from t1
left join t2
on t1.id = t2.id and t2.Memo = 'myText'
where t2.id is null
答案 2 :(得分:0)
我不善于理解你的问题:
你的意思是t2中的那些t1.id EXISTS但是相应的t2.Memo<> '会将myText'?
SELECT t1.id FROM t1 JOIN t2
ON t1.id = t2.id
HAVING t1.id NOT IN (SELECT id FROM t2 WHERE Memo = 'myText');
或者所有t1.id要么不是t2中的EXISTS,要么是EXISTS,而是Memo<> '会将myText'?
SELECT id FROM t1 WHERE id NOT IN (SELECT id FROM t2 WHERE Memo = 'myText');