7-SQL-join连接
2024-09-21 03:01:37
(1) 内连接
关键字:inner join on
select * from a_table inner join b_table on a_table.a_id = b_table.b_id;
/*
执行结果如下:
| a_id | a_name | a_part | b_id | b_name | b_part |
| ———— ———————— ———————— —————— ——————— ———————|
| 2 | 李四 | 政治部 | 2 | 李四 | 政治部 |
| 3 | 王五 | 装备部 | 3 | 王五 | 装备部 |
*/
Note:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集部分
(2) 左连接(左外连接)
关键字:left join on / left outer join on
select * from a_table left join b_table on a_table.a_id = b_table.b_id;
/*
执行结果如下:
| a_id | a_name | a_part | b_id | b_name | b_part |
| ———— ———————— ———————— —————— ——————— ———————|
| 2 | 李四 | 政治部 | 2 | 李四 | 政治部 |
| 3 | 王五 | 装备部 | 3 | 王五 | 装备部 |
| 1 | 张三 | 司令部 | NULL | NULL | NULL |
| 4 | 赵六 | 后勤部 | NULL | NULL | NULL |
*/
Note:left join 是left outer join的简写,全称左外连接,是外连接的一种左(外)连接,
左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录,右表记录不足的地方均为NULL。
(3) 右连接(右外连接)
关键字: right join on / right outer join on
select * from a_table right outer join b_table on a_table.a_id = b_table.b_id;
/*
执行结果如下:
| a_id | a_name | a_part | b_id | b_name | b_part |
| ———— | —————— | —————— | ———— | ——————— ——————|
| 2 | 李四 | 政治部 | 2 | 李四 | 政治部 |
| 3 | 王五 | 装备部 | 3 | 王五 | 装备部 |
| NULL | NULL | NULL | 5 | 刘七 | 国防部 |
| NULL | NULL | NULL | 6 | 杨八 | 审计部 |
*/
Note:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。
与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
(4) 全(外)连接
关键字: FULL OUTER JOIN
SELECT
O.ID,
O.ORDER_NUMBER,
O.CUSTOMER_ID,
C.ID,
C.NAME
FROM
ORDERS O
FULL OUTER JOIN CUSTOMERS C ON C.ID = O.CUSTOMER_ID;
注意:MySQL是不支持全外的连接的,这里给出的写法适合Oracle和DB2。但是可以通过左外和右外求合集来获取全外连接的查询结果。
最新文章
- linux(十三)__vsftpd服务器
- QtAlgorithms
- sql update多表联合更新
- JS实现电子时钟
- 浅谈HTTP响应拆分攻击
- Codeforces 429B Working out
- 基于注解的Spring MVC
- 使用rowid和rownum获取记录时要注意的问题
- SQL Server跨网段(跨机房)FTP复制
- Arch下载官方镜像列表Official mirrors
- Spring 工作原理
- 多台linux主机之间建立免密通信
- [二十一]JavaIO之BufferedReader 与 BufferedWriter
- css不受高度限制实现文本超出隐藏并以省略号结束
- jdk8新特性表达式1
- cocos2d-x绑lua的开发环境
- sqlserver 表中记录生成insert,可以加条件,可以生成建表语句
- Hive 1.2.1&Spark&Sqoop安装指南
- Storm原理及安装
- 深入new/delete:Operator new的全局重载
热门文章
- JS中的call,apply和bind及记忆方式
- 使用NodeJS模块-NodeJS官方提供的核心模块
- linux下unzip解压报错“symlink error: File name too long”怎么办?提供解决方案。
- kotlinx.android.synthetic.** 坑点
- Saltstack_使用指南15_多master
- pymysql增删改查操作
- linux 命令cp -a的用法
- Python—实现钉钉后台开发
- PyCharm关闭按两次Shift进入搜索框的功能
- Linux部署NFS服务共享文件