join查询

阅读数:880 发布时间:2016-06-24 15:52:08

作者:zzl005 标签: SQL 朱忠来005 left join right join inner join

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 示例:

示例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条:

inner-join

相关文章推荐: