excel mysql的sql连接语句_Excel in SQL中的各种连接(JOIN)实例详解

SQL中一共有多少种连接呢

今天咱们来一起捋一捋

咱别讲得太复杂

还是主要追求基础和思路

所以实例中咱都

只连接两个表

每个表中只有两列

三个表以上或多列的连接方法照实例类推

为了不乱先唠叨几句:

SQL的连接主要分为三大类1.内连接

2.外连接

3.交叉连接

开始表演:

手中有如下两个工作表

现在要通过各种方法连接两个工作表

sheet1表中有'书名'和'作者'两列

137742296_2_20180707101938441

sheet2表中有'书名'和'人物'两列

137742296_3_20180707101938504

1.内连接(inner join)

内连接一般称做等价连接

她负责连接出sheet1和sheet2表中书名相同的行

一般有两种写法:select * from [sheet1$] as a,[sheet2$] as b where a.书名=b.书名select * from [sheet1$] a inner join [sheet2$] as b on a.书名=b.书名

以上两种写法达到的效果是等同的如果在非Excel(其他数据库系统)中使用

请去掉表名两侧的中括号及美元符号

select * from sheet1 as a,sheet2 as b where a.书名=b.书名select * from sheet1 a inner join sheet2 as b on a.书名=b.书名

熟悉不熟悉

嗯,如果我的同事能看到这篇文章

那么我悄悄地告诉您

平时咱们用的所有拼接数据库表都是用的这种

来,老大,给拼个库,嘻嘻~~~

2.外连接

2.1 左连接(left outer join)

可简写为left join

她负责连接出sheet1中的所有行,并以sheet1表为基准(显示所有行),连接sheet2表书名相同的行,匹配不上的用空值代替

语句为:select * from [sheet1$] a left join [sheet2$] as b on a.书名=b.书名

如果在非Excel(其他数据库系统)中使用

请去掉表名两侧的中括号及美元符号

select * from sheet1 a left join sheet2 as b on a.书名=b.书名

2.2 右连接(right outer join)

可简写为right join

与2.1的左连接正好相反

她负责连接出sheet2中的所有行,并以sheet2表为基准(显示所有行),连接sheet1表书名相同的行,匹配不上的用空值代替

语句为:

select * from [sheet1$] a right join [sheet2$] as b on a.书名=b.书名

如果在非Excel(其他数据库系统)中使用

请去掉表名两侧的中括号及美元符号

select * from sheet1 a right join sheet2 as b on a.书名=b.书名

2.3 全连接(full outer join)

可简写为full join

她负责连接出sheet1和sheet2表中的所有行,任何表中书名无法匹配的行,用空值代替

需要说明的是

这个连接在Excel中不受支持

在其他数据库系统(如Foxpro、Mysql、sqlserver、Oracle)是没有问题的select * from sheet1 a full join sheet2 as b on a.书名=b.书名

但是,我们有变通的方法来达到全连接的效果

就是用左连接 右连接 联合查询的方法

语句为:select * from [sheet1$] a left join [sheet2$] as b on a.书名=b.书名

union

select * from [sheet1$] a right join [sheet2$] as b on a.书名=b.书名

3.交叉连接(cross join)

这个连接方式Excel也不支持,其他数据库系统中可以使用

交叉连接也称为笛卡尔积连接

她连接的是sheet1表中的每一行与sheet2表中的所有行的组合

她会返回一个非常庞大的查询

目前我还未发现这种连接方式会用作什么地方非Excel(其他数据库系统)中使用的语句为:

select * from [sheet1$] a cross join [sheet2$] as b order by a.书名

如果您喜欢这篇图文

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值