inner join , left join

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的不同

image

inner join 显示两个连接表匹配的内容 , 不匹配的内容不显示

1.INNER JOIN

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name

image

left join 以左表为匹配标准, 右表匹配左表的才显示结果, 不匹配的结果显示null

image

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

image

选取不同值

(2)SELECT name FROM TableA UNION ALL SELECT name FROM TableB

image

全部列出来

(3)注意:

SELECT * FROM TableA UNION SELECT * FROM TableB

image

由于 id 1 Pirate   与 id 2 Pirate 并不相同,不合并

猜你喜欢

转载自blog.csdn.net/mjb115889/article/details/83515827