sql多表连接查询怎么添加其它条件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql多表连接查询怎么添加其它条件相关的知识,希望对你有一定的参考价值。
参考技术A我也不知道有没有理解你的意思
1.建表
create table #t1(
id int,
name varchar(20)
)
create table #t2(
eid int,
ename varchar(20)
)
create table #t3(
sid int,
sname varchar(20)
)
2.插入数据
insert into #t1 values(1,'a'),(2,'b'),(3,'c'),(4,'d')
insert into #t2 values(1,'ab'),(2,'bc'),(3,'cd')
insert into #t3 values(1,'abc'),(2,'bcd'),(3,'cde'),(2,'')
3.查询
select a.id ,a.name ,b.eid ,b.ename ,c.sid ,c.sname
from #t1 a
join #t2 b on a.id =b.eid and b.ename ='bc' ----可直接+and+条件
join #t3 c on a.id =c.sid and c.sname ='bcd'
或者
select a.*,b.*,c.*
from #t1 a join #t2 b on a.id =b.eid
join #t3 c on a.id =c.sid
where b.ename ='bc' and c.sname ='bcd'-----在where后面统一加也行
结果都是: 2 b 2 bc 2 bcd
4.建议
最好全部用外连接 left join,以#t1位主表,查出#t1的所有记录,#t2和#t3里不满足条件的全部
用null显示,
select a.id ,a.name ,b.eid ,b.ename ,c.sid ,c.sname
from #t1 a
left join #t2 b on a.id =b.eid and b.ename ='bc'
left join #t3 c on a.id =c.sid and c.sname ='bcd'
结果为
1 a NULL NULL NULL NULL
2 b 2 bc 2 bcd
3 c NULL NULL NULL NULL
本回答被提问者采纳多表连接查询中,“on”和“where”有啥区别吗?
参考技术A 区别还是有的:(如下)\\x0d\\x0a1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。\\x0d\\x0a\\x0d\\x0a2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。以上是关于sql多表连接查询怎么添加其它条件的主要内容,如果未能解决你的问题,请参考以下文章