mysql left join right join inner join例子

原创 2013年12月01日 23:48:05

建表语句如下:

   

#--------------create table_a-----------
create table table_a(
  id int(11) not null auto_increment,
  name varchar(20) not null,
  primary key(id)
)engine=InnoDB default charset=utf8;

#----------------create table_b----------
create table table_b(
  id int(11) not null,
  name varchar(20) not null,
  primary key(id)
)engine=InnoDB default charset=utf8;

插入几条数据:

#-------------insert data into table a------------
insert into table_a values(1,'a20121313'),(2,'a2131314'),(3,'a43239284392'),(4,'a33727427'),
(5,'a32382592'),(6,'a42424224'),(7,'a14312141');
#-------insert data into table_b----------------
insert into table_b values(1,'b2141414'),(2,'b15315151'),(3,'b562842842'),(4,'b32185115');

1.left join

sql如下:

 

select * from table_a a left join table_b b on a.id = b.id; 

结果如下:

 

+----+--------------+------+------------+
| id | name         | id   | name       |
+----+--------------+------+------------+
|  1 | a20121313    |    1 | b2141414   |
|  2 | a2131314     |    2 | b15315151  |
|  3 | a43239284392 |    3 | b562842842 |
|  4 | a33727427    |    4 | b32185115  |
|  5 | a32382592    | NULL | NULL       |
|  6 | a382331      | NULL | NULL       |
|  7 | a64376371631 | NULL | NULL       |
+----+--------------+------+------------+
7 rows in set (0.00 sec)
通过观察结果可以得出以下结论,left join以左表为基础表,以右表为从表,左表不存在的数据设置为NULL。

2.right join

sql如下:

 select * from table_a a right join table_b b on a.id = b.id;

结果如下:

+------+--------------+----+------------+
| id   | name         | id | name       |
+------+--------------+----+------------+
|    1 | a20121313    |  1 | b2141414   |
|    2 | a2131314     |  2 | b15315151  |
|    3 | a43239284392 |  3 | b562842842 |
|    4 | a33727427    |  4 | b32185115  |
+------+--------------+----+------------+
4 rows in set (0.00 sec)

right join以右表为基础表,左表为从表,左表不存在的项设置为NULL

3.inner join

inner join无基础表,只是显示符合条件的结果。

相关文章推荐

左连接(left jion)、右连接(right jion)、内连接(inner join)性能比较

前提:数据库中一共有三个表:class,book,phone,而且每个数据库表中都有10万条数据,三个表一共有30万条数据,从大数据量的角度来检测你写的sql语句性能是如何的. 一.左连接 用sq...

SQL中INNER、LEFT、RIGHT JOIN的区别和用法详解

相信很多人在刚开始使用数据库的INNER JOIN、LEFT JOIN和RIGHT JOIN时,都不太能明确区分和正确使用这三种JOIN操作,本文通过一个简单的例子通俗易懂的讲解这三者的区别,希望对大...

对于 join, 如果不写 left ,inner ,right ,默认是什么联接呢?

默认是 inner join   #1. select * from a join b on a.id = b.id #2. select * from a inner j...

SQL中INNER、LEFT、RIGHT JOIN的区别和用法详解

相信很多人在刚开始使用数据库的INNER JOIN、LEFT JOIN和RIGHT JOIN时,都不太能明确区分和正确使用这三种JOIN操作,本文通过一个简单的例子通俗易懂的讲解这三者的区别,希望对大...

解析oracle中left right inner join

表A记录如下: aID aNum 1   a11 2   a22 3   a33 4   a44 5   a55 表B记录如下: bID bName 1   b11 2   b22 3   b33 4...

终于找到一个有助理解left/right/full outer join的例子

近日在学习《Understading DB2》的时候找到了一个例子,对于理解 left/right/full 三种 outer join 的大有裨益。       先看样本数据,来自DB2的示例...
  • kb5706
  • kb5706
  • 2012年05月09日 21:50
  • 1040

mysql 表连接(left/right/full join)时on 和 where的结果差异

有这样的一个问题mysql查询使用mysql中left(right)join筛选条件在on与where查询出的数据是否有差异。    可能只看着两个关键字看不出任何的问题。那我们使用实际的例子来...

mysql left( right ) join使用on 与where 筛选的差异

有这样的一个问题mysql查询使用mysql中left(right)join筛选条件在on与where查询出的数据是否有差异。    可能只看着两个关键字看不出任何的问题。那我们使用实际的例子来...

MySQL LEFT/RIGHT JOIN算法效率分析

理论上下推也是可以用到外联接上的,没看懂官方的那段伪代码,根据自己的想法写了一段测试代码,就是昨天代码的改进。 下面是官方给出的采用下推的算法: FOR each row ...

inner join,left join,right join,full join 的区别,用例子说明

[TEST@ORA1] SQL>select * from a; 编号 姓名 ---- ---------- 1000 张三 2000 李四 3000 王五 [TEST@ORA1] SQL...
  • zyb507
  • zyb507
  • 2012年09月29日 09:54
  • 1019
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql left join right join inner join例子
举报原因:
原因补充:

(最多只允许输入30个字)