我不确定是否可以使用单个JOIN完成此操作,但我基本上有两个共享ID列的表。为简单起见,我会说表A只包含一个ID,而表B包含一个ID和代码。表A和表B之间存在1:M关系,但是表A中的ID根本不包含在表B中也是可能的。我希望有一个查询返回特定代码范围内表B中存在的每个ID,或者表B中根本不存在。
我尝试使用LEFT JOIN,例如:
SELECT A.id FROM A LEFT JOIN B ON A.id = B.id AND b.code BETWEEN '000' AND '123'
但是,这仍然为我提供了代码范围之外的表B中存在的ID。
答案 0 :(得分:3)
使用左连接,并过滤结果以包含范围内的代码,以及表B中没有匹配记录的行:
select
A.id
from
A
left join B on B.id = A.id
where
B.code between '000' and '123' or B.id is null
答案 1 :(得分:0)
怎么样?
SELECT id FROM A LEFT JOIN B ON A.id = B.id
WHERE b.code IS NULL OR b.code BETWEEN ' ' AND '123'