繁体   English   中英

如何根据条件选择一个表中的所有记录,而第二个表中没有记录

[英]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 = 0status = 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'

您可以通过以下链接获得一些想法。

https://dataedo.com/kb/query/sql-server/find-empty-tables-in-database

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM