select * from Students a left join Teachers b on a.ID=b.ID
左边Students显示全部结果, 右表Teachers 显示匹配左边的内容,不匹配的为NULL
select * from Students a inner join Teachers b on a.ID=b.ID
只显示两个表匹配的, 不匹配的不显示
假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所示:让我们看看不同JOIN的不同
inner join 显示两个连接表匹配的内容 , 不匹配的内容不显示
1.INNER JOIN
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
left join 以左表为匹配标准, 右表匹配左表的才显示结果, 不匹配的结果显示null
right join 是后面的表为基础,与LEFT JOIN用法类似
UNION 与 UNION ALL
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。UNION 只选取记录,相同的记录则不显示, 而UNION ALL会列出所有记录,包括相同记录。
注意:UNION的条件查询必须相同才选取记录, 查询不相同的条件也会列出所有记录
(1)SELECT name FROM TableA UNION SELECT name FROM TableB
选取不同值
(2)SELECT name FROM TableA UNION ALL SELECT name FROM TableB
全部列出来
(3)注意:
SELECT * FROM TableA UNION SELECT * FROM TableB
由于 id 1 Pirate 与 id 2 Pirate 并不相同,不合并