SELECT *FROM A
id date
1 a1
2 a2
3 a4
SELECT *FROM b
id date
1 b1
2 b2
4 b4
--测试:
--1.内连接 inner join (仅取出匹配的数据)
select *FROM A INNER JOIN b on A.id=b.id
--2.左连接 left join (首先取出a表中所有数据,然后再加上与a,b匹配的的数据)
select * from a left join b on a.id = b.id
1 a1 1 b1
2 a2 2 b2
3 a3 NULL NULL
--3.右连接 right join (指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据)
select * from a right join b on a.id = b.id
1 a1 1 b1
2 a2 2 b2
NULL NULL 4 b4
--4.完整外部连接 FULL JOIN 或 FULL OUTER JOIN
完整外部联接返回左表和右表中的所有行。
当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。
如果表之间有匹配行,则整个结果集行包含基表的数据值。
select *FROM A FULL JOIN b on A.id=b.id
--5.交叉链接CROSS JOIN (把表A和表B的数据进行一个N*M的组合,即笛卡尔积。一般不常用)
select *FROM A CROSS JOIN b
--6.注意:
A left join B 表示:连接的记录数与A表的记录数同,即A表是主表
A right join B 表示:连接的记录数与B表的记录数同,即B表是主表
A left join B 等价B right join A
--7.内连接另外一种写法:
select * from a,b where a.id=b.id
这个语法是内连接的另外一种写法,其执行结果与inner join 一样
--8.备注:
select a.*,b.* from a left join b on a.k = b.k
select a.*,b.* from a left outer join b on a.k =b.k
----------上面两种一样left join是left outer join的简写
----------同理, ritht join是right outer join的简写
|
|