inner join on, left join on, right join on

转载 2007年09月15日 17:20:00

A记录如下:
aID               aNum
1                  a20050111
2                  a20050112
3                  a20050113
4                  a20050114
5                  a20050115

B记录如下:
bID               bName

1                   2006032401
2                  2006032402
3                  2006032403
4                  2006032404
8                  2006032408


实验如下:
1.left join


sql语句如下:
select * from A
left join B
on A.aID = B.bID

结果如下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404
5                   a20050115                NULL              NULL
(所影响的行数为 5 行)


结果说明:
               left join
是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B
表记录不足的地方均为NULL.

2.right join

sql语句如下:
select * from A
right join B
on A.aID = B.bID
结果如下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404
NULL           NULL                          8                     2006032408
(所影响的行数为 5 行)

结果说明:
        
仔细观察一下,就会发现,left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.


3.inner join
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID

结果如下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404

结果说明:
        
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
  

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查询出的数据是否有差异。    可能只看着两个关键字看不出任何的问题。那我们使用实际的例子来...

oracle数据库sql语句left join,right join,inner join的条件on和where的区别

1.left join,right join select * from a left join b on a.id = b.id and a.id ='12'   此sql语句效果:结果中a表筛...
  • Alsyuan
  • Alsyuan
  • 2017年06月14日 16:56
  • 231

SQL的left join、right join说明,以及on和where的区别

对SQL语句中的left join、 right join、on、where的描述以及讲解。 就一段SQL查询代码展开select * from product right join (select...

INNER JOIN, LEFT JOIN , RIGHT JOIN, FULL JOIN, Update inner join, Delete inner join, on And

1. INNER JOIN select * from A select * from B --select A.Name,A.City,B.km from A,B where A.pid=B.pi...

insert into on duplicate key update与update inner join使用效果对比分析

本文针对mysql的语法进行说明,我近期在使用mysql做数据统计的时候,总结了一下insert into on duplicate key update与update inner join的使用效果...

使用INNER JOIN ON 多表关联查询,获取指定用户下指定权限的资源SQL:

摘要:最近在看一个开源框架,其中用户,角色,资源,这块我感觉比较重要,所以就自己也模仿着写了下,其中在获取指定用户下的权限资源的时候遇到问题了,开始时,我首先想到的方法就是通过用户->角色->资源,然...

常用语句(一)create、insert into...values(...)、truncate、distinct、having、inner join ... on...

/* drop database exercise; truncate table student; truncate table book; alter table book drop column...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:inner join on, left join on, right join on
举报原因:
原因补充:

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