• 用实例展示left Join,right join,inner join,join,cross join,union 的区别


    1.向TI,T2插入数据:

    T1  7

    ID Field2 Field3 Field4
    1 1 3 54
    2 1 3 54
    3 1 3 54
    4 2 3 54
    5 3 3 54
    6 4 3 54
    7 5 3 54

     

    T2  7

    IDField22Field23

    1133

    2133

    3133

    4133

    5233

    6333

    7   9   33

     

    2.测试left join

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 left join dbo.T2 on t1.Field2=t2.Field22

    row_numIDField2Field3Field4IDField22Field23

    1113541133

    2113542133

    3113543133

    4113544133

    5213541133

    6213542133

    7213543133

    8213544133

    9313541133

    10313542133

    11313543133

    12313544133

    13423545233

    14533546333

    1564354NULLNULLNULL

    1675354NULLNULLNULL

     

    3.测试right join

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 right join dbo.T2 on t1.Field2=t2.Field22

    row_numIDField2Field3Field4IDField22Field23

    1NULLNULLNULLNULL8933

    2113541133

    3113542133

    4113543133

    5113544133

    6213541133

    7213542133

    8213543133

    9213544133

    10313541133

    11313542133

    12313543133

    13313544133

    14423545233

    15533546333

     

    4.测试join

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 join dbo.T2 on t1.Field2=t2.Field22

    row_numIDField2Field3Field4IDField22Field23

    1113541133

    2113542133

    3113543133

    4113544133

    5213541133

    6213542133

    7213543133

    8213544133

    9313541133

    10313542133

    11313543133

    12313544133

    13423545233

    14533546333

     

    5.测试inner join

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 inner join dbo.T2 on t1.Field2=t2.Field22

    row_numIDField2Field3Field4IDField22Field23

    1113541133

    2113542133

    3113543133

    4113544133

    5213541133

    6213542133

    7213543133

    8213544133

    9313541133

    10313542133

    11313543133

    12313544133

    13423545233

    14533546333

     

    6.测试cross join

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 cross join dbo.T2 on t1.Field2=t2.Field22

    消息156,级别15,状态1,第

    关键字'on' 附近有语法错误。

     

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 cross join dbo.T2 

    row_numIDField2Field3Field4IDField22Field23

    1113541133

    2113542133

    3113543133

    4113544133

    5113545233

    6113546333

    7113548933

    8213541133

    9213542133

    10213543133

    11213544133

    12213545233

    13213546333

    14213548933

    15313541133

    16313542133

    17313543133

    18313544133

    19313545233

    20313546333

    21313548933

    22423541133

    23423542133

    24423543133

    25423544133

    26423545233

    27423546333

    28423548933

    29533541133

    30533542133

    31533543133

    32533544133

    33533545233

    34533546333

    35533548933

    36643541133

    37643542133

    38643543133

    39643544133

    40643545233

    41643546333

    42643548933

    43753541133

    44753542133

    45753543133

    46753544133

    47753545233

    48753546333

    49753548933

     

    7.测试unoin

    select * from dbo.T1 union all select * from dbo.T2

    消息205,级别16,状态1,第

    使用UNIONINTERSECT EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。

     

    select Field2 from dbo.T1 union all select Field22 from dbo.T2

    Field2

    1

    1

    1

    2

    3

    4

    5

    1

    1

    1

    1

    2

    3

    9

     

    with T3 as

    ( select Field2 from dbo.T1 union all select Field22 from dbo.T2 )

    select ROW_NUMBER() over (order by T3.field2) as row_num,* from T3

     

    row_numField2

    11

    21

    31

    41

    51

    61

    71

    82

    92

    103

    113

    124

    135

    149

     

    8.生成数据库的脚本

    USE [Demo]

    GO

     

    /****** Object:  Table [dbo].[T1]    Script Date: 09/27/2013 23:19:29 ******/

    SET ANSI_NULLS ON

    GO

     

    SET QUOTED_IDENTIFIER ON

    GO

     

    CREATE TABLE [dbo].[T1](

    [ID] [int] IDENTITY(1,1) NOT NULL,

    [Field2] [int] NULL,

    [Field3] [int] NULL,

    [Field4] [int] NULL,

     CONSTRAINT [PK_T1] PRIMARY KEY CLUSTERED 

    (

    [ID] ASC

    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

    ) ON [PRIMARY]

     

    GO

     

    USE [Demo]

    GO

     

    /****** Object:  Table [dbo].[T2]    Script Date: 09/27/2013 23:19:53 ******/

    SET ANSI_NULLS ON

    GO

     

    SET QUOTED_IDENTIFIER ON

    GO

     

    CREATE TABLE [dbo].[T2](

    [ID] [int] IDENTITY(1,1) NOT NULL,

    [Field22] [int] NOT NULL,

    [Field23] [int] NOT NULL,

     CONSTRAINT [PK_T2] PRIMARY KEY CLUSTERED 

    (

    [ID] ASC

    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

    ) ON [PRIMARY]

     

    GO

     

     

    delete from dbo.T1

    truncate table dbo.T2

     

    select * from  T1

    select * from  T2

     

    insert dbo.T1 values (1,3,54)

    insert dbo.T1 values (1,3,54)

    insert dbo.T1 values (1,3,54)

    insert dbo.T1 values (2,3,54)

    insert dbo.T1 values (3,3,54)

    insert dbo.T1 values (4,3,54)

    insert dbo.T1 values (5,3,54)

     

    truncate table dbo.T2

    insert dbo.T2 values (1,33)

    insert dbo.T2 values (1,33)

    insert dbo.T2 values (1,33)

    insert dbo.T2 values (1,33)

    insert dbo.T2 values (2,33)

    insert dbo.T2 values (3,33)

    insert dbo.T2 values (4,33)

    insert dbo.T2 values (9,33)

     

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 left join dbo.T2 on t1.Field2=t2.Field22

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 right join dbo.T2 on t1.Field2=t2.Field22

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 join dbo.T2 on t1.Field2=t2.Field22

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 inner join dbo.T2 on t1.Field2=t2.Field22

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 cross join dbo.T2 on t1.Field2=t2.Field22

    select ROW_NUMBER()over (order by t1.id,t2.id) as row_num,* from dbo.T1 cross join dbo.T2 

     

    select * from dbo.T1 union all select * from dbo.T2

     

    select Field2 from dbo.T1 union all select Field22 from dbo.T2

     

    with T3 as

    ( select Field2 from dbo.T1 union all select Field22 from dbo.T2 )

    select ROW_NUMBER() over (order by T3.field2) as row_num,* from T3

  • 相关阅读:
    Eclipse / android studio 添加第三方jar包 步骤
    Android checkbox 自定义点击效果
    Android 程序打包和安装过程
    Android 基础
    (转)Genymotion安装virtual device的“unable to create virtual device, Server returned Http status code 0”的解决方法
    (转)eclipse 导入Android 项目 步骤
    微信开放平台注册 步骤
    Android Studio 初级安装
    数组
    作用域问题代码
  • 原文地址:https://www.cnblogs.com/youchun/p/3339923.html
Copyright © 2020-2023  润新知