(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。但是可以通过左外和右外求合集来获取全外连接的查询结果。