left join on 条件 关于ON后面的条件 如何执行?

酉园草 2016-05-06 07:12:54
tab1
id size
1 10
2 20
3 30

tab2
size name
10 AAA
20 BBB
20 CCC

下列语句 ON 后面的条件 如何执行的?请分别解释。
select * from tab1 left join tab2 on(1 = 1)
select * from tab1 left join tab2 on(1 != 1)
select * from tab1 left join tab2 on(tab1.SIZE = tab2.SIZE)
select * from tab1 left join tab2 on(tab1.SIZE = tab2.SIZE or tab2.NAME='AAA')
select * from tab1 left join tab2 on(tab1.SIZE = tab2.SIZE AND tab2.NAME='AAA')
...全文
1437 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
酉园草 2016-05-07
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:
A left join B on on 后面的条件,其实就是对 B 数据的过滤, 如果对A 的数据过滤,或对关联结果的过滤,要放在 where 后;
多谢版主,明白了!
酉园草 2016-05-07
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:
A left join B on on 后面的条件,其实就是对 B 数据的过滤, 如果对A 的数据过滤,或对关联结果的过滤,要放在 where 后;
引用 1 楼 roy_88 的回复:
1、笛卡尔集 ,结果集=表1记录数*表2记录数 2、结果集=表1记录数 3、结果集=表1记录数+表2记录数(每个SIZE重复的记录数)--记录为2时为+1, 满足条件 4、结果集=表1记录数+表2记录数(每个SIZE重复的记录数+NAME='AAA'),如果只有一条AAA和Size=10,为不重复,满足条件 5、结果集=表1记录数+表2记录数(满足条件重复的记录数)--记录为2时为+1, 满足条件 -------------------------------------------------------------- 要掌握知识要动手,学任何语言动必须动手
多谢版主,明白了!
卖水果的net 2016-05-07
  • 打赏
  • 举报
回复
A left join B on on 后面的条件,其实就是对 B 数据的过滤, 如果对A 的数据过滤,或对关联结果的过滤,要放在 where 后;
中国风 2016-05-06
  • 打赏
  • 举报
回复
1、笛卡尔集 ,结果集=表1记录数*表2记录数 2、结果集=表1记录数 3、结果集=表1记录数+表2记录数(每个SIZE重复的记录数)--记录为2时为+1, 满足条件 4、结果集=表1记录数+表2记录数(每个SIZE重复的记录数+NAME='AAA'),如果只有一条AAA和Size=10,为不重复,满足条件 5、结果集=表1记录数+表2记录数(满足条件重复的记录数)--记录为2时为+1, 满足条件 -------------------------------------------------------------- 要掌握知识要动手,学任何语言动必须动手

34,587

社区成员

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

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