zoukankan      html  css  js  c++  java
  • inner join、left join、right join等的区别

    left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录.
    right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录.
    inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行.
    full join:外连接,返回两个表中的行:left join + right join
    cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数.
    declare @a table(a int,b int)
    declare @b table(a int,b int)
    insert @a values(1,1)
    insert @a values(2,2)
    insert @b values(1,1)
    insert @b values(3,3)
    select * from @a 
    select * from @b
    --左:
    select * from @a Aa left join @b Bb on Aa.a=Bb.a
    --右:
    select * from @a Aa right join @b Bb on Aa.a=Bb.a
    --内
    select * from @a Aa inner join @b Bb on Aa.a=Bb.a
    --外:
    select * from @a Aa full join @b Bb on Aa.a=Bb.a
    --交叉连接
    select * from @a cross join @b

    筛选条件放在left join on后面和放在where后面的结果不一样的。
    记住on后面是连接条件,where后面是筛选条件就OK啦!

    即:on后面的条件筛选参与连接的记录,主表中的记录会全部出现结果集中,而只有符合on条件的从表记录才会出现在结果集中。

    SELECT A.ORDER_ID, B.TRANS_TYPE  FROM  GW_GATEWAY_ORDER A  LEFT JOIN SYS_MCHT_SETTLE_DETAIL B ON A.ORDER_ID = B.ORDER_ID WHERE A.ORDER_ID >= 20101209150044021 AND A.ORDER_ID <= 20101210150048099;
    结果:

    ORDER_ID *           TRANS_TYPE
    20101209150044021    1
    20101209150044021    2
    20101210141359000    1
    20101210144447001    

    SELECT A.ORDER_ID, B.TRANS_TYPE  FROM  GW_GATEWAY_ORDER A LEFT JOIN SYS_MCHT_SETTLE_DETAIL B ON A.ORDER_ID = B.ORDER_ID AND B.trans_type = 1 WHERE A.ORDER_ID >= 20101209150044021 AND A.ORDER_ID <= 20101210150048099;
    结果:


    ORDER_ID *           TRANS_TYPE
    20101209150044021    1
    20101210141359000    1
    20101210144447001    


    SELECT A.ORDER_ID, B.TRANS_TYPE  FROM  GW_GATEWAY_ORDER A LEFT JOIN SYS_MCHT_SETTLE_DETAIL B ON A.ORDER_ID = B.ORDER_ID WHERE A.ORDER_ID >= 20101209150044021 AND A.ORDER_ID <= 20101210150048099 AND B.trans_type = 1;
    结果:

    ORDER_ID *           TRANS_TYPE
    20101209150044021    1
    20101210141359000    1

  • 相关阅读:
    datatable一些用法续
    验证视图状态MAC失败
    datatable应用select方法后变成行数组的问题的解决
    [jQuery] html中两个select之间option元素的add与remove,多值上传
    [VBS] 使用vbs文件保证程序运行,并模拟键盘回车键
    [jQuery] 为table各行添加不同颜色的class
    [转]谈谈个人网站建设和经营
    [jQuery] jquery如何reset表单(form)
    兼容Firefox IE Chrome的onkeydown事件处理方法
    [bat] 使用bat文件保证指定程序运行
  • 原文地址:https://www.cnblogs.com/qhorse/p/4702487.html
Copyright © 2011-2022 走看看