首页 > 数据库技术 > 详细

SQL学习之高级联结(自联结、自然联结、外联接)

时间:2016-08-31 00:26:51      阅读:341      评论:0      收藏:0      [点我收藏+]
create table Customers(
Id int identity(1000000,1),
Company varchar(30) null,
Name varchar(20) null
)
insert into Customers values(Fun4All,Tom)
insert into Customers values(Alibaba,Tim)
insert into Customers values(BaiDu,Jerry)
insert into Customers values(G0ogle,Herry)
insert into Customers values(Tencent,MaHuaTeng)
insert into Customers values(Fun4All,Tom)

这是讲解所需要的sql脚本

1、自联结       代码如下:

select * from Customers

技术分享

现在有个需求,需要给Tom同一公司的所有会员发送一条邮件。

分析下基本思路,首先根据Tom找到其所在的公司名,在根据公司名找到其公司民下的所有会员。下面是解决代码:

select * 
from Customers 
where Company in(select Company from Customers where Name=Tom)

技术分享

ok,通过子查询轻松的完成需求!

但是这边有一个重点,你必须要知道,子查询虽然方便,但是大多数DBMS的处理子查询的速度比处理联结要慢的多,如果数据量少的话,几乎没什么影响,但是如果后期数据会很大的话,就应该使用自联结!

下面是使用自联结的解决代码:

select *
from Customers c1,Customers c2
where c1.Company=c2.Company
and c2.Name=Tom

技术分享

这个是两张表(实际是一张表)联结之后的结果图,ok完成需求!

通过联结的机制

 

SQL学习之高级联结(自联结、自然联结、外联接)

原文:http://www.cnblogs.com/GreenLeaves/p/5824201.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!