快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

用联接来查询两个表

本文仅作为初学者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));


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

后面两个也可以写成用邮件表来联接地址表,这就留给大家自己去写吧。
返回类别: 教程
上一教程: MYSQL的DAEMON启动参数
下一教程: 精通数据库系列之入门-基础篇1

您可以阅读与"用联接来查询两个表"相关的教程:
· 跟我学SQL:(四)查询多个表格
· 用INNER JOIN语法联接多个表建记录集
· 数据库查询结果的动态排序(3)
· 在SQL2000查询中使用XDR的例子
· 数据库查询结果的动态排序(1)
    微笑服务 优质保证 索取样品