SQL - 获取除了在where条件下过滤的记录之外的其他记录。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL - 获取除了在where条件下过滤的记录之外的其他记录。相关的知识,希望对你有一定的参考价值。
我有3张表。
TableA - Id, TableB_id
TableB - Id, Name, TableC_id
TableC - Id, Valid
有效值可以是0或1
TableA -> TableB & TableB -> TableC之间有一对多的关系。
我想获取TableA & TableB的所有记录,其中TableC.valid = 0。
另外,TableA & TableB的记录,即使TableC中没有关联的记录。
我已经写好了第一部分的查询,但是如何包含第二个条件?(如果可能的话,不使用联合的方式)
查询。
Select
a.id,
b.id,
b.name,
c.id
from
TableA a
left join TableB b on a.TableB_id = b.id
left join TableC c on b.TableC_id = c.id
where
c.valid = 1;
答案
在一个 left join
除第一张表外,其他所有表的条件通常都是在第一张表的基础上进行的。on
条款。
Select a.id, b.id, b.name, c.id
from TableA a left join
TableB b
on a.TableB_id = b.id left join
TableC c
on b.TableC_id = c.id and c.valid = 1;
以上是关于SQL - 获取除了在where条件下过滤的记录之外的其他记录。的主要内容,如果未能解决你的问题,请参考以下文章