[英]How to select all records in one table where no records in second table based on criteria
我有一个细分表:
id
subcondoname
我还有第二张桌子,上面有房地产清单,看起来像这样:
SubdivisionID (this ties back to id on the subdivision table)
inactive
status
我想要一个查询,该查询从第一个表中拉出每个子subcondoname
,第二个表中没有记录,其中inactive = 0
或status = active
一个简单的NOT EXISTS
可以做到:
SELECT *
FROM t1
WHERE NOT EXISTS (
SELECT 1
FROM t2
WHERE t2.subdivisionid = t1.id AND (t2.inactive = 0 OR t2.status = 'active')
)
除了以上两个答案,
与LEFT JOIN
相比, NOT EXISTS
运行速度更快。 因为LEFT JOIN
从两个表中读取数据,即按照给定的逻辑进行扫描并进行比较,而NOT EXISTS
只是简单地进行ANTI SEMI JOIN,这部分地从细分表中获取结果。
请尝试下面的代码
选择*从细分的s左连接真实状态s.id = r.subdividid WHERE Isnull(r.inactive,0)= 0或r.status ='active'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.