我有一个细分表:
id
subcondoname
我还有第二张桌子,上面有房地产清单,像这样:
SubdivisionID (this ties back to id on the subdivision table)
inactive
status
我想要一个查询,该查询从第一个表中没有subcondoname
或inactive = 0
的第一个表中提取每个status = active
答案 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)