MySQL连接查询

226 阅读1分钟
  • it_job表
id name job
1 PHP
2 C
3 JAVA
  • friend_job表
id name job
1 金融
2 水利
3 画家



内连接

SELECT
	a.`id`, a.`name`, a.`job`, b.`id`, b.`name`, b.`job`
FROM
	it_job AS a
INNER JOIN
	friend_job AS b
ON	
	a.`name` = b.`name`;
id name job id1 name1 job1
1 PHP 2 水利
2 C 3 画家

两个表的交集

左连接/左外连接

SELECT
	a.`id`, a.`name`, a.`job`, b.`id`, b.`name`, b.`job`
FROM
	it_job AS a
LEFT JOIN
	friend_job AS b
ON	
	a.`name` = b.`name`;
id name job id1 name1 job1
1 PHP 2 水利
2 C 3 画家
3 JAVA (Null) (Null) (Null)

结果如图所示

右连接/右外连接

SELECT
	a.`id`, a.`name`, a.`job`, b.`id`, b.`name`, b.`job`
FROM
	it_job AS a
RIGHT JOIN
	friend_job AS b
ON	
	a.`name` = b.`name`;
id name job id1 name1 job1
(Null) (Null) (Null) 1 金融
1 PHP 2 水利
2 C 3 (远 画家

原理和左连接一样

全连接

使用UNION 注意UNION和UNION ALL的区别
SELECT
	a.`id`, a.`name`, a.`job`
FROM
	it_job AS a
UNION
SELECT
	b.`id`, b.`name`, b.`job`
FROM
	friend_job AS b;
id name job
1 PHP
2 C
3 JAVA
4 金融
5 水利
6 画家