超详细mysql left join,right join,inner join用法分析

地宇之父

地宇之父

2016-02-19 10:32

图老师小编精心整理的超详细mysql left join,right join,inner join用法分析希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~
下面是例子分析
表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

创建这两个表SQL语句如下:
CREATE TABLE  a
aID int( 1 ) AUTO_INCREMENT PRIMARY KEY ,
aNum char( 20 )
)
CREATE TABLE b(
bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
bName char( 20 ) 
)

INSERT INTO a
VALUES ( 1, 'a20050111' ) , ( 2, 'a20050112' ) , ( 3, 'a20050113' ) , ( 4, 'a20050114' ) , ( 5, 'a20050115' ) ;

INSERT INTO b
VALUES ( 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 JOING 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
INNER JOIN  b
ON a.aID =b.bID

等同于以下SQL句:
SELECT * 
FROM a,b
WHERE 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并不以谁为基础,它只显示符合条件的记录.
LEFT JOIN操作用于在任何的 FROM 子句中,

组合
展开更多 50%)
分享

猜你喜欢

超详细mysql left join,right join,inner join用法分析

编程语言 网络编程
超详细mysql left join,right join,inner join用法分析

SQL 外链接操作小结 inner join left join right join

SQLServer
SQL 外链接操作小结 inner join left join right join

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL 外链接操作小结 inner join left join right join

编程语言 网络编程
SQL 外链接操作小结 inner join   left join   right join

MySQL JOIN之完全用法

编程语言 网络编程
MySQL JOIN之完全用法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQL Server的Inner Join及Outer Join

编程语言 网络编程
SQL Server的Inner Join及Outer Join

MySQL Join详解

MySQL mysql数据库
MySQL Join详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

QMV是什么格式

QMV是什么格式

js玩一玩WSH吧

js玩一玩WSH吧
下拉加载更多内容 ↓