请教关于select 语句中的left join 与left outer join 或left inner join 联接方式的区别....

jjjgh 2006-01-05 09:45:47
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

三种结果如何区别呀,

请高手们讲解..........
...全文
4479 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjjgh 2006-01-09
  • 打赏
  • 举报
回复
多谢各位,
结贴 。
vovo2000 2006-01-05
  • 打赏
  • 举报
回复
--在分析器中运行看看他们的区别
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 --交差連接
mislrb 2006-01-05
  • 打赏
  • 举报
回复
上面都對沒什麼說的
zlp321002 2006-01-05
  • 打赏
  • 举报
回复
LEFT OUTER JOIN 或 LEFT JOIN 是一样的。
WangZWang 2006-01-05
  • 打赏
  • 举报
回复
select a.*
from ckd a left join td b on a.djhm = b.tdh
left join ykd c on a.djhm = c.ykdh
jjjgh 2006-01-05
  • 打赏
  • 举报
回复
多谢回复:
别再请看一个语句:
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 的写法。。。

多谢了。
WangZWang 2006-01-05
  • 打赏
  • 举报
回复
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
没有这种写法,错误的语句.

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧