SQL Server [join] 整理
2024-09-06 10:23:30
【表A】
Aid Aname Acode
1 aa 001
2 bb 002
3 cc 003
4 dd 004
5 ee 005
Aid Aname Acode
1 aa 001
2 bb 002
3 cc 003
4 dd 004
5 ee 005
【表B】
Bid Bname Bcode
1 aaa 101
3 bbb 102
5 ccc 103
7 ddd 104
9 eee 105
Bid Bname Bcode
1 aaa 101
3 bbb 102
5 ccc 103
7 ddd 104
9 eee 105
----------------------------------------------------------------------------
left join:左联接
left join:左联接
返回包括左表中的所有记录和右表中联结字段相等的记录。
例:
SELECT *
FROM A
LEFT JOIN B
ON A.Aid=B.Bid
SELECT *
FROM A
LEFT JOIN B
ON A.Aid=B.Bid
结果:
Aid Aname Acode Bid Bname Bcode
1 aa 001 1 aaa 101
2 bb 002 NULL NULL NULL
3 cc 003 3 bbb 102
4 dd 004 NULL NULL NULL
5 ee 005 5 ccc 103
Aid Aname Acode Bid Bname Bcode
1 aa 001 1 aaa 101
2 bb 002 NULL NULL NULL
3 cc 003 3 bbb 102
4 dd 004 NULL NULL NULL
5 ee 005 5 ccc 103
----------------------------------------------------------------------------
right join:右联接
返回包括右表中的所有记录和左表中联结字段相等的记录。
例:
SELECT *
FROM A
Right JOIN B
ON A.Aid=B.Bid
SELECT *
FROM A
Right JOIN B
ON A.Aid=B.Bid
结果:
Aid Aname Acode Bid Bname Bcode
1 aa 001 1 aaa 101
3 cc 003 3 bbb 102
5 ee 005 5 ccc 103
NULL NULL NULL 7 ddd 104
NULL NULL NULL 9 eee 105
Aid Aname Acode Bid Bname Bcode
1 aa 001 1 aaa 101
3 cc 003 3 bbb 102
5 ee 005 5 ccc 103
NULL NULL NULL 7 ddd 104
NULL NULL NULL 9 eee 105
----------------------------------------------------------------------------
inner join:内联接
只返回两个表中联结字段相等的行。
例:
SELECT *
FROM A
INNER JOIN B //INNER可以不写
ON A.Aid=B.Bid
SELECT *
FROM A
INNER JOIN B //INNER可以不写
ON A.Aid=B.Bid
结果:
Aid Aname Acode Bid Bname Bcode
1 aa 001 1 aaa 101
3 cc 003 3 bbb 102
5 ee 005 5 ccc 103
Aid Aname Acode Bid Bname Bcode
1 aa 001 1 aaa 101
3 cc 003 3 bbb 102
5 ee 005 5 ccc 103
----------------------------------------------------------------------------
full join:全联接
返回两个表中所有字段。
例:
SELECT *
FROM A
FULL JOIN B
ON A.Aid=B.Bid
SELECT *
FROM A
FULL JOIN B
ON A.Aid=B.Bid
结果:
Aid Aname Acode Bid Bname Bcode
1 aa 001 1 aaa 101
2 bb 002 NULL NULL NULL
3 cc 003 3 bbb 102
4 dd 004 NULL NULL NULL
5 ee 005 5 ccc 103
NULL NULL NULL 7 ddd 104
NULL NULL NULL 9 eee 105
Aid Aname Acode Bid Bname Bcode
1 aa 001 1 aaa 101
2 bb 002 NULL NULL NULL
3 cc 003 3 bbb 102
4 dd 004 NULL NULL NULL
5 ee 005 5 ccc 103
NULL NULL NULL 7 ddd 104
NULL NULL NULL 9 eee 105
----------------------------------------------------------------------------
cross join:交叉联接
返回两个表的笛卡儿积。
例1:
SELECT *
FROM A
Cross JOIN B
SELECT *
FROM A
Cross JOIN B
结果:
Aid Aname Acode Bid Bname Bcode
1 1
2 1
3 1
4 (5*5条) 1
5 1
1 3
2 3
……
……
……
Aid Aname Acode Bid Bname Bcode
1 1
2 1
3 1
4 (5*5条) 1
5 1
1 3
2 3
……
……
……
例2:
SELECT *
FROM A
Cross JOIN B
WHERE
A.Aid = B.Bid
SELECT *
FROM A
Cross JOIN B
WHERE
A.Aid = B.Bid
结果:
Aid Aname Acode Bid Bname Bcode
1 aa 001 1 aaa 101
3 cc 003 3 bbb 102
5 ee 005 5 ccc 103
与inner join 结果一样,实际上是先返回所有结果(25条),再从中查询符合WHERE的结果。
Aid Aname Acode Bid Bname Bcode
1 aa 001 1 aaa 101
3 cc 003 3 bbb 102
5 ee 005 5 ccc 103
与inner join 结果一样,实际上是先返回所有结果(25条),再从中查询符合WHERE的结果。
最新文章
- UIScrollView的封装
- 50多条mysql数据库优化建议
- 黄聪:WordPress 多站点建站教程(六):使用WP_Query、switch_to_blog函数实现获取子站点分类中的文章
- 杀死future处理的阻塞线程
- 关于自定义的NavigationBar
- VoHelper
- C#垃圾回收机制
- java应用CPU占用率过高问题的分析
- Swiftly语言学习1
- 转Delphi中Memo显示行号列号
- 购物车(Shopping cart) —— B2C网站核心产品设计 (二)
- Powershell-获取命令和帮助
- FWT快速沃尔什变换学习笔记
- Java中级开发工程师知识点归纳
- MFC笔记8
- RC1015 cannot open include file 'atlres.h'
- Error updating database:线程异常
- 1-log4j2入门
- 【nodejs】理想论坛帖子下载爬虫1.07 使用request模块后稳定多了
- Windows Storage Stack
热门文章
- C#跨线程访问(一) ---- SynchronizationContext
- 16_TLB与流水线
- 机器学习Explainability vs Interpretability
- Python内置的一个用于命令项选项与参数解析的模块argparse
- NX二次开发-UFUN获取相邻面UF_MODL_ask_adjac_faces
- string反向找位置,分割字符串(只取文件夹路径)
- Mysql 触发器写法
- AtCoder ARC061E Snuke's Subway Trip 最短路
- Python-爬虫-requests库用语post登录
- VS2010-MFC(Ribbon界面开发:为Ribbon Bar添加控件)