关于Left join的用法(在线)

coeltdit 2004-11-11 05:44:18
TableA: TableB:
id name id job parent_id
1 张三 1 23 1
2 李四 2 34 2
3 王五 3 34 4
4 54 2

SQL: Select a.*,b.*
From TableA a left outer join TableB b
on a.id = b.parant;
我运行以上的SQL语句返回的是以下结果集:
ID Name ID Job Parent_ID
1 张三 1 23 1
2 李四 2 34 2
2 李四 4 54 2
3 王五 NULL NULL NULL
-----------------------------------------------------------------------
帮助里说是这样说明的:
LEFT JOIN 或 LEFT OUTER JOIN。
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

我一直还没有搞明白这句话的意思, 即然是返左表的所有行, 为什么会有4条记录???

希望大家用通俗的语言帮我解释一遍, 谢谢!分不够再加.
...全文
337 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
coeltdit 2004-11-11
  • 打赏
  • 举报
回复
谢谢, 我的朋友们。 谢谢!
xingfuniao 2004-11-11
  • 打赏
  • 举报
回复
inner join 就是所有紀錄都要有,左邊的表和右邊的表都要有紀錄。
left join 就是只要滿足左邊的表的條件就行,右邊的表有無紀錄都可以。
Andy__Huang 2004-11-11
  • 打赏
  • 举报
回复
因為tableB的parent_id有兩個值等于2﹐而且它是符合條件的﹐所以形成兩條記錄
lsxaa 2004-11-11
  • 打赏
  • 举报
回复
正常一对一的是返回3条

但是你指定的条件是 a.id = b.parant

a.id=2 时对应b.parant 有两个,当然要返回4条了...


27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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