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 2006032

转自:http://blog.sina.com.cn/u/2759866740

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

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

时间: 2024-08-25 10:53:50

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

mysql多表查询方法(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 ) ) 

python3 mysql 多表查询

python3 mysql 多表查询 一.准备表 创建二张表: company.employee company.department #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male'

MySQL多表查询回顾

----------------------siwuxie095 MySQL 多表查询回顾 以客户和联系人为例(一对多) 1.内连接 /*内连接写法一*/ select * from t_customer c,t_linkman l where c.cid=l.clid /*内连接写法二(inner 可以省略不写)*/ select * from t_customer c inner join t_linkman l on c.cid=l.clid 2.左外连接 /*左外连接(outer 可以省

MYSQL 连表查询及别名用法

MYSQL连表查询是两个表之间的查询或者更多表之间查询,通过外键的方式查询所有的数据,在查询过程中产生字段的重复,为了区分这种情况数据库设计别名,有的表很长,也可以用别名. 1,连表查询 INNER JOIN ,LEFT JOIN,RIGHT JOIN INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录.LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录.RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表

4 - MySQL:多表查询

MySQL:多表查询 一,介绍 本节主题 多表连接查询 复合条件连接查询 子查询 准备工作 #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male', age int, dep_id int

MySQL数据表查询操作

准语法结构:编写DQL时一定要严格按照此语法的顺序来实现!/* SELECT [ALL | DISTINCT] ALL表示查询出所有的内容 DISTINCT 去重 {* | 表名.* | 表名.字段名[ AS 别名][,...]} 指定查询出的字段的 FROM 表名[AS 别名][,表1... AS 别名] [INNER | [LEFT | RIGHT] [OUTER] JOIN 另一张表名 [AS 别名] ON 关联条件] [WHERE 条件] [GROUP BY 分组字段[,...]] [H

134 MySQL多表查询

目录 一.连表查询 二.一对多的表关系 2.1 数据准备 2.2 笛卡尔积的概念 2.3 内连接 2.4 左连接 2.5 右连接 2.6 左右连接可以转换 2.7 全连接 三.一对一与一对多情况一致 四.多对多的表连接 一.连表查询 连接:将有联系的多张表通过关联(有联系就行,不一定是外键)字段,进行连接,形参一张大表 连表查询:在大表的基础上进行查询,就称之为连表查询 将表与表建立连接的方式有四种:内连接.左连接.右连接.全连接 二.一对多的表关系 2.1 数据准备 1.创建部门表 creat

记一次mysql多表查询(left jion)优化案例

一次mysql多表查询(left jion)优化案例 在新上线的供需模块中,发现某一个查询按钮点击后,出不来结果,找到该按钮对应sql手动执行,发现需要20-30秒才能出结果,所以服务端程序判断超时,故先不显示结果 以下是对这条查询的优化记录 1 数据库配置 数据库配置:4C8G 主表数据:3W+ 2 sql语句 提取sql语句,简化如下 SELECT taba.id, taba.title, taba.type, taba.end_time, tabb.username, tabc.orgna

IT十八掌 Mysql 多表查询

多表查询   多表设计--外键约束 作用:保证数据的完整性 创建完语句后,可以直接使用修改语句定义 alter table 表名 add foreign key 当前表名 (字段名) references 目标表名 (目标表的主键); 分析: 有一个部门的表,还有一个员工表, create database day16; use day16; create table dept( did int primary key auto_increment, dname varchar(30) ); c