码迷,mamicode.com
首页 > 其他好文 > 详细

17_左右内连接

时间:2015-05-20 18:43:38      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:having   inner   where   左右   

A表M个数据
B表N个数据
A表和B表连接后,就有M*N个数据。如:
select * from ta,tb;



1.连接
2.连接条件
------------------

1.左连接left:
select 列1,列2,列N from
tableA left join tableB 
on tableA.列=tableB.列
where,group by,having。。。照常写


2.右连接right:
select 列1,列2,列N from
tableA right join tableB 
on tableA.列=tableB.列
where,group by,having。。。照常写


3.内连接inner:
select 列1,列2,列N from
tableA inner join tableB 
on tableA.列=tableB.列
where,group by,having。。。照常写


-----------------------

左/右连接时,都以左表为准,
左右连接可以相互转换。
A left join B --->B right join A

内连接:查询左右表都有的数据,但不要左/右连接表中NULL的那一部分
内连接是左右表的交集。

create table boy(
name char(3),
flower char(5)
);

insert into boy
values
("刘翔","玫瑰花"),
("周杰伦","菊花"),
("王力宏","桃花"),
("林书豪","枝子花"),
("犀利哥","茉莉花");

create table girl(
name char(3),
flower char(5)
);

insert into girl
values
("大S","玫瑰花"),
("凤姐","菊花"),
("芙蓉姐","菊花"),
("林专玲","桃花"),
("高圆圆","枝子花"),
("杨幂","破花");


建好表后:
1.左连接left join:
select boy.* ,girl.* from
boy left join girl
on boy.flower=girl.flower;

左表是boy,所以以boy为准。没有的补NULL
+--------+--------+--------+--------+
| name   | flower | name   | flower |
+--------+--------+--------+--------+
| 刘翔   | 玫瑰花 | 大S    | 玫瑰花 |
| 周杰伦 | 菊花   | 凤姐   | 菊花   |
| 周杰伦 | 菊花   | 芙蓉姐 | 菊花   |
| 王力宏 | 桃花   | 林专玲 | 桃花   |
| 林书豪 | 枝子花 | 高圆圆 | 枝子花 |
| 犀利哥 | 茉莉花 | NULL   | NULL   |
+--------+--------+--------+--------+

2.右连接right join:
select boy.*,girl.* from
boy right join girl
on boy.flower=girl.flower;

这个右连接中的左表是girl,所以以girl表为准:
+--------+--------+--------+--------+
| name   | flower | name   | flower |
+--------+--------+--------+--------+
| 刘翔   | 玫瑰花 | 大S    | 玫瑰花 |
| 周杰伦 | 菊花   | 凤姐   | 菊花   |
| 周杰伦 | 菊花   | 芙蓉姐 | 菊花   |
| 王力宏 | 桃花   | 林专玲 | 桃花   |
| 林书豪 | 枝子花 | 高圆圆 | 枝子花 |
| NULL   | NULL   | 杨幂   | 破花   |
+--------+--------+--------+--------+

注意,girl right join boy,这个右连接中左表也是boy,
	可以转换成boy left join girl,两者查询结果是一样的。


3.内连接inner join:
select boy.*,girl.* from
boy inner join girl
on boy.flower=girl.flower;

左右表的交集,不要NULL那一部分
+--------+--------+--------+--------+
| name   | flower | name   | flower |
+--------+--------+--------+--------+
| 刘翔   | 玫瑰花 | 大S    | 玫瑰花 |
| 周杰伦 | 菊花   | 凤姐   | 菊花   |
| 周杰伦 | 菊花   | 芙蓉姐 | 菊花   |
| 王力宏 | 桃花   | 林专玲 | 桃花   |
| 林书豪 | 枝子花 | 高圆圆 | 枝子花 |
+--------+--------+--------+--------+


17_左右内连接

标签:having   inner   where   左右   

原文地址:http://1154179272.blog.51cto.com/10217799/1653255

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!