zoukankan      html  css  js  c++  java
  • 多表联查

    交叉连接: cross join  (不太用)

    内连接:    [inner] join  (最常用)

    外连接:  左外连接: left [outer] join

          右外连接: right [outer] join

          完全连接: full [outer] join

    自连接: self join 

    内连接:通过比较被连接的表所共同拥有的字段,把多个表连接起来。

      语法:select 列名列表 from 表名1 [inner] join 表名2 on 表名1.列名 <比较运算符> 表名2.列名

    列出购买产品的顾客信息:select buyer_name, sales.buyer_id, qty from buyers [inner] join sales on buyers.buyer_id = sales.buyer_id

    等价于:select buyer_name, sales.buyer_id, qty from buyers, sales where buyers.buyer_id = sales.buyer_id

    左外连接:除了满足连接条件的行,还包括左表中的所有剩余行,但不包括右表中的不匹配行。

    查询所有客户的购买情况:select buyer_name, sales.buyer_id, qty from buyers left [outer] join sales on buyers.buyer_id = sales.buyer_id

    右外连接:除了满足连接条件的行,还包括右表中的所有剩余行,但不包括左表中的不匹配行。

    eg: select buyer_name, sales.buyer_id, qty from buyers right [outer] join sales on buyers.buyer_id = sales.buyer_id

    交叉连接:从连接的表中返回所有可能的记录组合。(在规范化的数据库中,很少使用交叉连接;可以为数据库生成测试数据;为清单及企        

         业模板生产所有可能的组合数据)


    eg: select buyer_name, qty from buyers cross join sales

    自连接:使用自连接,可以查询一个表中各记录之间的关系

    使用自连接应注意:引用表的两份副本时,必须使用表的别名

             生成自连接时,表中每一行都和自身比较一下,并生成重复的记录,使用where子句来消除这些重复记录。

    显示购买相同产品的客户列表: select a.buyer_id buyer1, a.prod_id, b.buyer_id buyer2 from sales a self join sales b on a.prod_id = b.prod_id where a.buyer_id buyer1 > b.buyer_id buyer2

     

     

  • 相关阅读:
    VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT方式)
    VMWare虚拟机下为Windows Server 2012配置静态IP(NAT方式)
    Windows 7防火墙阻止了远程桌面连接的解决方法
    Win10系统如何在防火墙里开放端口
    ECharts 定制 label 样式
    目标值柱状图
    echarts中datazoom相关配置
    环形图
    带时间轴的指标监控柱状图
    2020mysql面试题
  • 原文地址:https://www.cnblogs.com/gogojiayou/p/3386367.html
Copyright © 2011-2022 走看看