• 温习sql语句中JOIN的各种操作(SQL2005环境)


    温习sql语句中JOIN的各种操作(SQL2005环境)

    为了方便测试,先建二个基本表T_Employee(员工表),T_Region(地区表)
    Sql语句如下:
    CREATE TABLE [dbo].[T_Employee](
     [ID] [int] NULL,
     [Name] [nvarchar](50)  NULL,
     [RegionID] [int] NULL
    ) ON [PRIMARY]

    CREATE TABLE [dbo].[T_Region](
     [ID] [int] NULL,
     [Name] [nvarchar](50)  NULL
    ) ON [PRIMARY]

    录入几条测试数据

    T_Employee员工的测试数据:

    ID Name RegionId
    1 Jimmy 1
    2 Rose 2
    3 Tom 3
    4 Mike 4
    5 Unknown 9
    6 Jessica 0
    7 Mary -1
    8 Janson 8
    NULL ALLEmpty NULL
    NULL Empty1 3
    NULL Empty2 -2
    9 Emplty3 NULL

    T_Region地区表的测试数据:

    ID Name 
    1 湖北省
    2 上海市
    3 广东省
    4 山西省
    5 杭州市
    6 江西省
    NULL 空地区


    以下是各种测试的语句以及查询结果
    1.[JOIN]

    select
     e.id as EmpId,
     e.name as EmpName,
     r.id as RegionId,
     r.name as RegionName
     from T_Employee as e JOIN T_Region as r ON e.regionId=r.Id
     
    查询结果:
    EmpId EmpName RegionId RegionName
    1 Jimmy 1 湖北省
    2 Rose 2 上海市
    3 Tom 3 广东省
    4 Mike 4 山西省
    NULL Empty1 3 广东省

    2.[INNER JOIN]

    select
     e.id as EmpId,
     e.name as EmpName,
     r.id as RegionId,
     r.name as RegionName
     from T_Employee as e INNER JOIN T_Region as r ON e.regionId=r.Id
     
    查询结果:
    EmpId EmpName RegionId RegionName
    1 Jimmy 1 湖北省
    2 Rose 2 上海市
    3 Tom 3 广东省
    4 Mike 4 山西省
    NULL Empty1 3 广东省 

    与1.结果相同

    3.[FULL JOIN]

    select
     e.id as EmpId,
     e.name as EmpName,
     r.id as RegionId,
     r.name as RegionName
     from T_Employee as e FULL JOIN T_Region as r ON e.regionId=r.Id

    查询结果:
    EmpId EmpName RegionId RegionName
    1 Jimmy 1 湖北省
    2 Rose 2 上海市
    3 Tom 3 广东省
    4 Mike 4 山西省
    5 Unknown NULL NULL
    6 Jessica NULL NULL
    7 Mary NULL NULL
    8 Janson NULL NULL
    NULL ALLEmpty NULL NULL
    NULL Empty1 3 广东省
    NULL Empty2 NULL NULL
    9 Emplty3 NULL NULL
    NULL NULL 5 杭州市
    NULL NULL 6 江西省
    NULL NULL NULL 空地区

    4.[FULL OUTER JOIN]

    select
     e.id as EmpId,
     e.name as EmpName,
     r.id as RegionId,
     r.name as RegionName
     from T_Employee as e FULL OUTER JOIN T_Region as r ON e.regionId=r.Id

    查询结果:
    EmpId EmpName RegionId RegionName
    1 Jimmy 1 湖北省
    2 Rose 2 上海市
    3 Tom 3 广东省
    4 Mike 4 山西省
    5 Unknown NULL NULL
    6 Jessica NULL NULL
    7 Mary NULL NULL
    8 Janson NULL NULL
    NULL ALLEmpty NULL NULL
    NULL Empty1 3 广东省
    NULL Empty2 NULL NULL
    9 Emplty3 NULL NULL
    NULL NULL 5 杭州市
    NULL NULL 6 江西省
    NULL NULL NULL 空地区

    与3.结果相同
     

    4.[LEFT JOIN]

    select
     e.id as EmpId,
     e.name as EmpName,
     r.id as RegionId,
     r.name as RegionName
     from T_Employee as e LEFT JOIN T_Region as r ON e.regionId=r.Id
     
     
    查询结果:
    EmpId EmpName RegionId RegionName
    1 Jimmy 1 湖北省
    2 Rose 2 上海市
    3 Tom 3 广东省
    4 Mike 4 山西省
    5 Unknown NULL NULL
    6 Jessica NULL NULL
    7 Mary NULL NULL
    8 Janson NULL NULL
    NULL ALLEmpty NULL NULL
    NULL Empty1 3 广东省
    NULL Empty2 NULL NULL
    9 Emplty3 NULL NULL

    5.[LEFT OUTER JOIN]
    select
     e.id as EmpId,
     e.name as EmpName,
     r.id as RegionId,
     r.name as RegionName
     from T_Employee as e LEFT OUTER JOIN T_Region as r ON e.regionId=r.Id
     
    查询结果:
    EmpId EmpName RegionId RegionName
    1 Jimmy 1 湖北省
    2 Rose 2 上海市
    3 Tom 3 广东省
    4 Mike 4 山西省
    5 Unknown NULL NULL
    6 Jessica NULL NULL
    7 Mary NULL NULL
    8 Janson NULL NULL
    NULL ALLEmpty NULL NULL
    NULL Empty1 3 广东省
    NULL Empty2 NULL NULL
    9 Emplty3 NULL NULL

    与4.结果相同 

    6.[RIGHT JOIN]

    select
     e.id as EmpId,
     e.name as EmpName,
     r.id as RegionId,
     r.name as RegionName
     from T_Employee as e RIGHT JOIN T_Region as r ON e.regionId=r.Id

     
    查询结果:
    EmpId EmpName RegionId RegionName 
    1 Jimmy 1 湖北省
    2 Rose 2 上海市
    3 Tom 3 广东省
    NULL Empty1 3 广东省
    4 Mike 4 山西省
    NULL NULL 5 杭州市
    NULL NULL 6 江西省
    NULL NULL NULL 空地区

    7.[RIGHT OUTER JOIN]
    select
     e.id as EmpId,
     e.name as EmpName,
     r.id as RegionId,
     r.name as RegionName
     from T_Employee as e RIGHT OUTER JOIN T_Region as r ON e.regionId=r.Id

     
    查询结果:
    EmpId EmpName RegionId RegionName 
    1 Jimmy 1 湖北省
    2 Rose 2 上海市
    3 Tom 3 广东省
    NULL Empty1 3 广东省
    4 Mike 4 山西省
    NULL NULL 5 杭州市
    NULL NULL 6 江西省
    NULL NULL NULL 空地区
    与6.结果相同


    8.[CROSS JOIN]
    select
     e.id as EmpId,
     e.name as EmpName,
     r.id as RegionId,
     r.name as RegionName
     from T_Employee as e CROSS JOIN T_Region as r
     
    查询结果:
    EmpId EmpName RegionId RegionName
    1 Jimmy 1 湖北省
    2 Rose 1 湖北省
    3 Tom 1 湖北省
    4 Mike 1 湖北省
    5 Unknown 1 湖北省
    6 Jessica 1 湖北省
    7 Mary 1 湖北省
    8 Janson 1 湖北省
    NULL ALLEmpty 1 湖北省
    NULL Empty1 1 湖北省
    NULL Empty2 1 湖北省
    9 Emplty3 1 湖北省
    1 Jimmy 2 上海市
    2 Rose 2 上海市
    3 Tom 2 上海市
    4 Mike 2 上海市
    5 Unknown 2 上海市
    6 Jessica 2 上海市
    7 Mary 2 上海市
    8 Janson 2 上海市
    NULL ALLEmpty 2 上海市
    NULL Empty1 2 上海市
    NULL Empty2 2 上海市
    9 Emplty3 2 上海市
    1 Jimmy 3 广东省
    2 Rose 3 广东省
    3 Tom 3 广东省
    4 Mike 3 广东省
    5 Unknown 3 广东省
    6 Jessica 3 广东省
    7 Mary 3 广东省
    8 Janson 3 广东省
    NULL ALLEmpty 3 广东省
    NULL Empty1 3 广东省
    NULL Empty2 3 广东省
    9 Emplty3 3 广东省
    1 Jimmy 4 山西省
    2 Rose 4 山西省
    3 Tom 4 山西省
    4 Mike 4 山西省
    5 Unknown 4 山西省
    6 Jessica 4 山西省
    7 Mary 4 山西省
    8 Janson 4 山西省
    NULL ALLEmpty 4 山西省
    NULL Empty1 4 山西省
    NULL Empty2 4 山西省
    9 Emplty3 4 山西省
    1 Jimmy 5 杭州市
    2 Rose 5 杭州市
    3 Tom 5 杭州市
    4 Mike 5 杭州市
    5 Unknown 5 杭州市
    6 Jessica 5 杭州市
    7 Mary 5 杭州市
    8 Janson 5 杭州市
    NULL ALLEmpty 5 杭州市
    NULL Empty1 5 杭州市
    NULL Empty2 5 杭州市
    9 Emplty3 5 杭州市
    1 Jimmy 6 江西省
    2 Rose 6 江西省
    3 Tom 6 江西省
    4 Mike 6 江西省
    5 Unknown 6 江西省
    6 Jessica 6 江西省
    7 Mary 6 江西省
    8 Janson 6 江西省
    NULL ALLEmpty 6 江西省
    NULL Empty1 6 江西省
    NULL Empty2 6 江西省
    9 Emplty3 6 江西省
    1 Jimmy NULL 空地区
    2 Rose NULL 空地区
    3 Tom NULL 空地区
    4 Mike NULL 空地区
    5 Unknown NULL 空地区
    6 Jessica NULL 空地区
    7 Mary NULL 空地区
    8 Janson NULL 空地区
    NULL ALLEmpty NULL 空地区
    NULL Empty1 NULL 空地区
    NULL Empty2 NULL 空地区
    9 Emplty3 NULL 空地区 
     
     
     


     

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Python_02
    iOS架构模式浅析
    Swift学习目录
    Flutter基础系列之混合开发(二)
    iOS性能优化
    Flutter基础系列之入门(一)
    iOS应用卡顿分析
    Weex是如何让JS调用产生原生UIView的?
    WeexSDK之注册Modules
    WeexSDK之注册Handlers
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1070752.html
Copyright © 2020-2023  润新知