请教关于select 语句中的left join 与left outer join 或left inner join 联接方式的区别....
sql 语句中,一直不了解左联接(left join)与左外联接(left outer join),左内联接(left inner join ) 两种语句的区别 ,
如:
select a.*,b.* from a left join b on a.k = b.k
select a.*,b.* from a left outer join b on a.k =b.k
select a.*,b.* from a left inner join b on a.k = b.k
三种结果如何区别呀,
请高手们讲解..........
问题点数:20、回复次数:7Top
1 楼WangZWang(先来)回复于 2006-01-05 09:51:15 得分 10
select a.*,b.* from a left join b on a.k = b.k
select a.*,b.* from a left outer join b on a.k =b.k
----------上面两种一样left join是left outer join的简写
select a.*,b.* from a left inner join b on a.k = b.k
没有这种写法,错误的语句.Top
2 楼jjjgh(程序小意思)回复于 2006-01-05 10:06:16 得分 0
多谢回复:
别再请看一个语句:
select a.*
from ckd a left join td b,ykd c
on a.djhm = b.tdh , a.djhm = c.ykdh
该语句有错,不知何故,我的sql意思是ckd 左联接td,ykd 两个table ,分别通过
a.djhm = b.tdh , a.djhm = c.ykdh来读取数据,,,
不知应如何写,,,
请高手讲解一下关联多个table 的写法。。。
多谢了。
Top
3 楼WangZWang(先来)回复于 2006-01-05 10:11:40 得分 0
select a.*
from ckd a left join td b on a.djhm = b.tdh
left join ykd c on a.djhm = c.ykdh
Top
4 楼zlp321002(Life Is Good,Let's Shine)回复于 2006-01-05 10:19:46 得分 0
LEFT OUTER JOIN 或 LEFT JOIN 是一样的。Top
5 楼mislrb(上班看看早报,上上CSDN,下班看看电影)回复于 2006-01-05 10:42:17 得分 0
上面都對沒什麼說的Top
6 楼vovo2000(没人要的猫)回复于 2006-01-05 10:50:58 得分 10
--在分析器中运行看看他们的区别
declare @tbl1 table(id1 char(10) ,name1 char(10))
insert @tbl1 select
'1','a' union select
'2','b' union select
'33','d' union select
'44','e'
select '弟一','個表' union all
select * from @tbl1
declare @tbl2 table(id2 char(10),name2 char(10))
insert @tbl2 select
'1','a' union select
'2','b' union select
'55','d' union select
'66','e'
select '弟二','個表' union all
select * from @tbl2
select '内連接','記録数=','表1表2','関連の記録' union all
select * from @tbl1 as a inner join @tbl2 as b on a.id1 = b.id2 --内連接
select '左連接','','関連記録外','表1記録全有' union all
select * from @tbl1 as a left join @tbl2 as b on a.id1 = b.id2 --左連接
select '右連接','','関連記録外','表2記録全有' union all
select * from @tbl1 as a right join @tbl2 as b on a.id1 = b.id2 --右連接
select '全連接','',' 表1和表2','所有記録' union all
select * from @tbl1 as a full join @tbl2 as b on a.id1 = b.id2 --全連接
select '交差連接','記録数=','表1記録数×','表2記録数' union all
select * from @tbl1 as a cross join @tbl2 as b --交差連接Top
7 楼jjjgh(程序小意思)回复于 2006-01-09 16:31:55 得分 0
多谢各位,
结贴 。Top




