Welcome

首页 / 数据库 / MySQL / MySQL左连接、右连接和内连接详解

MySQL左连接、右连接和内连接详解2011-10-24本文向您简单介绍MySQL的ySQL左连接、右连接和内连接,并对具体的操作情况给出简单示例。

以MySql为例。在MySQL数据库中建立两张数据表,并分别插入一些数据。

示例脚本如下:

drop table table1;
CREATE TABLE `andrew`.`table1

`name` VARCHAR(32) NOT NULL,
`city` VARCHAR(32) NOT NULL

ENGINE = MyISAM;
insert into TABLE1(name, city) values ("Person A", "BJ");
insert into TABLE1(name, city) values ("Person B", "BJ");
insert into TABLE1(name, city) values ("Person C", "SH");
insert into TABLE1(name, city) values ("Person D", "SZ");
commit;
drop table table2;
CREATE TABLE `andrew`.`table2

`name` VARCHAR(32) NOT NULL,
`city` VARCHAR(32) NOT NULL

ENGINE = MyISAM;
insert into TABLE2(name, city) values ("Person W", "BJ");
insert into TABLE2(name, city) values ("Person X", "SH");
insert into TABLE2(name, city) values ("Person Y", "SH");
insert into TABLE2(name, city) values ("Person Z", "NJ");
commit;

1. MySQL外连接 – 左连接结果

table1居左,故谓之左连接。这种情况下,以table1为主,即table1中的所有记录均会被列出。有一下三种情况:

a. 对于table1中的每一条记录对应的城市如果在table2中也恰好存在而且刚好只有一条,那么就会在

返回的结果中形成一条新的记录。如上面Person A和Person B对应的情况。

b. 对于table1中的每一条记录对应的城市如果在table2中也恰好存在而且有N条,那么就会在返回的结果中形成N条新的记录。如上面的Person C对应的情况。

c. 对于table1中的每一条记录对应的城市如果在table2中不存在,那么就会在返回的结果中形成一条

条新的记录,且该记录的右边全部NULL。如上面的Person D对应的情况。

不符合上面三条规则的记录不会被列出。