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')
...全文
919 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
酉园草 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, 满足条件 -------------------------------------------------------------- 要掌握知识要动手,学任何语言动必须动手
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2016-05-06 07:12
社区公告
暂无公告