Mysql的链表操作语句为:SELECT * FROM table1 INNER|LEFT|RIGHT JOIN table2 ON condition
由连表语句可分为INNER JOIN(内连)、LEFT JOIN(左连)、RIGHT JOIN(右连);对于内连,我们经常会用SELECT * FROM a JOIN b ON,省略INNER。
关于三种连表的解释:
INNER JOIN(内连接):取得两个表中存在连接匹配关系的记录。
LEFT JOIN(左连接):取得左表完全记录,如果在右表没找到符合条件的记录,则展示数据为null
RIGHT JOIN(右连接):与 LEFT JOIN 相反,取得右表完全记录,如果在左表没找到符合条件的记录,则展示数据为null
概念是非常抽象的,我们接下来用几个例子来理解三种连表。
表A(用户表):
名字 | 用户组id |
---|---|
二狗子 | 1 |
三牛子 | 2 |
四龟子 | 2 |
五愣子 | 3 |
表B(用户组表):
用户组id | 用户组名 |
---|---|
1 | 行政组 |
2 | 技术组 |
10 | 酱油组 |
内连后的结果
名字 | 用户组id | 用户组id | 用户组名 |
---|---|---|---|
二狗子 | 1 | 1 | 行政组 |
三牛子 | 2 | 2 | 技术组 |
四龟子 | 2 | 2 | 技术组 |
由上面结果可以看出,内连根据连接条件将左右表符合条件的数据项合并成一张表
左连后的结果入下表
名字 | 用户组id | 用户组id | 用户组名 |
---|---|---|---|
二狗子 | 1 | 1 | 行政组 |
三牛子 | 2 | 2 | 技术组 |
四龟子 | 2 | 2 | 技术组 |
五愣子 | 3 | NULL | NULL |
由上表可以看出,左连所有数据都查出来,与符合连接条件的右表数据组合,如果存在右表查不到符合条件数据,则连接null
右连后的结果
名字 | 用户组id | 用户组id | 用户组名 |
---|---|---|---|
二狗子 | 1 | 1 | 行政组 |
三牛子 | 2 | 2 | 技术组 |
四龟子 | 2 | 2 | 技术组 |
NULL | NULL | 10 | 酱油组 |
右连则与左连相反,右表的所有数据都会查出来。
网友评论