zoukankan      html  css  js  c++  java
  • sql基础语法-联接查询

    交叉联接

    1.不带where条件的,将返回两个表的 行乘积

    select c.*, e.* from Sales.Customers c
    cross join hr.Employees e

    2.带where 条件的,交叉联接不能使用ON

    select e1.empid,e1.firstname,e1.lastname,
           e2.empid,e2.firstname,e2.lastname
           from HR.Employees as e1
           cross join HR.Employees as e2 where e1.empid= e2.empid

    内联接

    内联接先对两个表做笛卡尔乘积,再用on进行筛选,Inner join,默认Inner可以忽略。

    SELECT E.empid,E.firstname,E.lastname,O.orderid
    From HR.Employees AS E
        JOIN Sales.Orders AS O
        ON E.empid=O.empid

    外联接

    1)左外连接LEFT [OUTER] JOIN

    显示符合条件的数据行,同时显示左边数据表不符合条件的数据行,右边没有对应的条目显示NULL

    例如,以下查询会查询出,没有订单的客户信息,orderid 填充NULL

    SELECT C.custid,C.companyname,O.orderid
        FROM Sales.Customers AS C
        LEFT OUTER JOIN Sales.Orders AS O
        ON C.custid=O.custid

    2)右外连接RIGHT [OUTER] JOIN

    显示符合条件的数据行,同时显示右边数据表不符合条件的数据行,左边没有对应的条目显示NULL

    例如,以下查询会查出所有的订单信息,没有订单信息的customer信息不会被查出。

    SELECT O.orderid,C.custid,C.companyname
        FROM Sales.Orders AS O 
        LEFT OUTER JOIN Sales.Customers AS C
        ON O.custid=C.custid

    3)全外连接full [outer] join

    显示符合条件的数据行,同时显示左右不符合条件的数据行,相应的左右两边显示NULL,即显示左连接、右连接和内连接的并集。

    例如以下代码,返回的结果集行数相通,对于没有订单的customer同样会返回数据。

       SELECT C.custid,C.companyname,O.orderid
        FROM Sales.Customers AS C
        FULL OUTER JOIN Sales.Orders AS O
        ON C.custid=O.custid
    
        SELECT O.orderid,C.custid,C.companyname
        FROM Sales.Orders AS O 
        FULL OUTER JOIN Sales.Customers AS C
        ON O.custid=C.custid

    其他联接-复合联接

    其他联接-不等联接

    其他联接-多联接查查询

  • 相关阅读:
    【云速建站】购买前的指导
    【云速建站】域名配置指导
    Python爬虫批量下载糗事百科段子,怀念的天王盖地虎,小鸡炖蘑菇...
    舌尖上的安全
    【云速建站】视频播放专题
    Python装饰器总结,带你几步跨越此坑!
    让你提前认识软件开发(15):程序调试的利器—日志
    Win8下IIS的安装和站点的公布
    [2011山东ACM省赛] Mathman Bank(模拟题)
    Android UI开发神兵利器之Android Action Bar Style Generator
  • 原文地址:https://www.cnblogs.com/shuzhenyu/p/5732543.html
Copyright © 2011-2022 走看看