用联接来查询两个表

用联接来查询两个表

本文仅作为初学者SQL应用备忘录 
我们经常要查询两个表中某个字段相同的和不同的记录,用联接来进行查询可以很方便地得到所要的结果。 
一、什么是联接 
联接:join 表示两个表的关系,我们可以把两个表看成两个集合。假设有两个表,我们用A和B来表示,这两个表有一个或者多个相同的字段。那么,就存在着以下三个不同的集合: 
1、交集:两个表中字段相等的记录 
2、A交B补:在A中,且相同字段的内容不等于B的记录 
3、B交A补:在B中,且相同字段的内容不等于A的记录

二、用联接来查询 
join有三种用法与以上三个集合对应 
1、交集:inner join 内部联接 
2、A交B补:left join 左联接 
3、B交A补:right join 右联接

三、实例 
现在来看一个实例。有两个表,表一:地址;表二:邮件。 
为了简单,两个表都只有一个字段,字段名是“名字”。现在来得到三个集合: 
1、在两个表中都有名字的记录 
SELECT 地址.名字 AS 名字 
FROM 地址 INNER JOIN 邮件 ON 地址.名字 = 邮件.名字;


2、在地址中有名字且在邮件中没有名字的记录 
SELECT 地址.名字 
FROM 地址 LEFT JOIN 邮件 ON 地址.名字 = 邮件.名字 
WHERE (((邮件.名字) Is Null));


注:对地址表来说这是左联接,对邮件表来说,这就是右联接

3、在地址中没有名字且在邮件中有名字的记录 
SELECT 邮件.名字 
FROM 地址 RIGHT JOIN 邮件 ON 地址.名字 = 邮件.名字 
WHERE (((地址.名字) Is Null));


注:对地址表来说这是右联接,对邮件表来说,这就是左联接

后面两个也可以写成用邮件表来联接地址表,这就留给大家自己去写吧。Bluetooth 和 lz1220 可以来看看。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值