如何查询出一个表中的其中一个字段的值在另一个表中不存在的记录

有两个表:

[code="sql"]create table a(
id VARCHAR(255) PRIMARY KEY,
name CHAR(50)
);

create table b(
id VARCHAR(255) referrence foreign key a(id),
name CHAR(50)
)[/code]

问:如何查询出表a中id列的值在表b中不存在的记录.

目前我能想到的方法是:

[code="sql"]SELECT
*
FROM
(
SELECT
a.*,
b.id _id
FROM
a
LEFT JOIN b
WHERE
a.id = b.id
)
t
WHERE
t._id IS NULL;[/code]

有没有人能想到更好一点的方法? 请指教! 另外,我用的数据库是DB2.

4个回答

[code="java"]
select *
from a A
where not exists ( select 1
from b B
where A.id = B.id);
[/code]
效率应该比你的高

你欺负人吧。还能简单?都用了左连了。

select *

from a A

where a.id not in( select b.id from b B )

DB2差集运算:EXCEPT、EXCEPT ALL

-- 求差集:A减B
SELECT * FROM A -- 集合A
EXCEPT

SELECT * FROM B;-- 集合B

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐