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

时间:2019-08-08 13:22:41

标签: mysql sql join

我有一个细分表:

id
subcondoname

我还有第二张桌子,上面有房地产清单,像这样:

SubdivisionID (this ties back to id on the subdivision table)
inactive
status

我想要一个查询,该查询从第一个表中没有subcondonameinactive = 0的第一个表中提取每个status = active

4 个答案:

答案 0 :(得分:2)

一个简单的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')
)

答案 1 :(得分:1)

除了上述两个答案之外,

NOT EXISTS相比,

LEFT JOIN的运行速度更快。因为LEFT JOIN从两个表中读取数据,即进行扫描,然后根据给定的逻辑对其进行比较 而NOT EXISTS只需执行ANTI SEMI JOIN,即可部分提取细分表中的结果。

答案 2 :(得分:0)

请尝试以下代码

SELECT * FROM细分s s.id = r.subdivisionid上的LEFT JOIN实时状态r Isnull(r.inactive,0)= 0或r.status ='active'

答案 3 :(得分:0)

您从以下链接中获得了一些想法。

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

相关问题