连接查询解惑笔记
1 minute read
除了一般的select查询,还有内连接、外连接(左连接、右连接)和交叉连接的概念。
下面在mysql中建立test01表和test02表来说明这几种连接查询的区别。
表一: 表二:
###1. 内连接 内连接是查询几张表的公共部分的数据,如下图。 查询语句:
SELECT *
FROM TEST01 A
INNER JOIN TEST02 B
ON A.AID = B.BCONTENT;
但是通常内连接都会采用更简单的方式:
SELECT *
FROM TEST01 A , TEST02 B
ON A.AID = B.BCONTENT;
查询出来的结果是一样的,如下图: 左连接查询中,如果将test01和test02两个表的位置互换,和不换的时候的右连接结果是一样的
###2. 外连接 外连接查询分为左外连接、右外连接和全外连接查询三种。 ####1. 左连接 左连接是以左表为基准,查询出来的结果显示左表的所有数据,右表没有符合条件数据显示null。
SELECT *
FROM TEST01 A
LEFT JOIN TEST02 B
ON A.AID = B.BCONTENT;
可以这样理解,ON后边的条件只作用于右表。 查询结果为: ####2. 右连接 右连接和左连接对应,是以右表为基准,查询出来的结果显示右表的所有数据,左表没有符合条件数据显示null。
SELECT *
FROM TEST01 A
RIGHT JOIN TEST02 B
ON A.AID = B.BCONTENT;
ON后边的条件只作用于左表。 查询结果为: ####3. 全连接 目前为止,MySQL还不支持全连接,但是可以通过union操作进行全连接。
SELECT *
FROM TEST01 A
LEFT JOIN TEST02 B
ON A.AID = B.BCONTENT
UNION
SELECT *
FROM TEST01 A
RIGHT JOIN TEST02 B
ON A.AID = B.BCONTENT;
查询结果如下图: ###3. 交叉连接 交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
I feedback.
Let me know what you think of this article on twitter @Yanlei_Hello or leave a comment below!
Let me know what you think of this article on twitter @Yanlei_Hello or leave a comment below!
comments powered by Disqus