您的位置:首页 > 数据库 > MySQL

mysql多表查询方法(left join(左连接),right join (右连接),inner join (内连接)的区别)

2014-06-09 08:59 525 查看
表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 2006032

转自:http://blog.sina.com.cn/u/2759866740
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐