您使用哪种连接从父表和子表中选择数据,其中父表可能不包含子数据?
答案 0 :(得分:1)
我认为你的问题更恰当地说明了:
如何在主表中查找子表中没有任何项目的项目?
这是SQL中一个非常常见的问题,并且有一个已知的解决方案......这适用于T-SQL(您需要始终说出您正在使用的内容)
select m.master_data, c.child_data
from master_table m
left outer join child_table c
on m.ID = c.ID
where c.child_data IS NULL
当子表中没有任何内容时,OUTER连接会在子表列中生成空值,因此您只需在子表中显示带空值的行即可。您不会在结果中显示子表中的任何列。
答案 1 :(得分:1)
有几种方法可以找到没有租约的房产。
在where子句
中使用子查询select *
from propertys
where propertys.propertyID not in (select propertyID from lease);
或者,您可以在where子句
中使用带有空检查的左连接select *
from propertys
left join lease on lease.propertyID = propertys.propertysID
where lease.leaseID is null;
答案 2 :(得分:0)
SELECT
p.*
FROM
Property p
LEFT JOIN Lease l ON p.propertyid = l.propertyid
WHERE l.propertyid IS NULL