left join
以左表为基准,返回左表中所有记录,以及右表中联结字段相等的记录。
抽象SQL 语句:
select * from A left join B on A.column_name = B.column_name;
其中 A 表作为左表,B 表作为右表,A 表所有记录都显示,B 表只会显示符合搜索条件的值(A.column_name = B.column_name
),B 表记录不足的地方均为 Null
left join 示例:
- 左表为:doc 表,右表为 admin 表
- 其中 doc 表的 uid 字段 代表 admin 表的 id 字段
示例SQL 语句:
select uid,cid,title from doc left join admin on doc.uid = admin.id;
doc表中的 uid 值有:
0,1,13,14
admin 表中的 id 值有:
1,7,10,11,12,13,14
显示结果:

可以看到 doc 表 uid = 0 的记录也显示出来了
right join
与 left join 相反,以右表为基准,显示右表中的所有记录,左表只显示符合搜索条件的记录
right join 示例:
示例sql 语句:
select id,name from doc right join admin on doc.uid = admin.id;
显示结果只有106条记录:
+----+--------+
| id | name |
+----+--------+
| 1 | gsh |
| 1 | gsh |
| 1 | gsh |
| 1 | gsh |
| 1 | gsh |
| 1 | gsh |
| 1 | gsh |
| 1 | gsh |
| 1 | gsh |
...
...
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
| 14 | zzl005 |
+----+--------+
106 rows in set (0.00 sec)
inner join
抽象SQL 语句:
select * from A inner join B on A.column_name = B.column_name;
显示结果:
只显示符合 A.column_name = B.column_name;
记录的值
inner join 示例:
示例sql 语句:
select uid,cid,title from doc inner join admin on doc.uid = admin.id;
显示结果只有102条:
