SELECT     SJ_CangChu.pinming as 品名, SJ_CangChu.xinghao as 型号, SJ_CangChu.tiaoma as 条码,sum(SJ_Order.num) as 数量
FROM         dbo.SJ_Order INNER JOIN
                      dbo.SJ_CangChu ON SJ_Order.outer_sku_id = SJ_CangChu.tiaoma
                      where SJ_Order.status='WAIT_SELLER_SEND_GOODS'
                      group by SJ_CangChu.pinming, SJ_CangChu.xinghao, SJ_CangChu.tiaoma
                      union all
SELECT     SJ_CangChu.pinming as 品名, SJ_CangChu.xinghao as 型号, SJ_CangChu.tiaoma as 条码,sum(SJ_Order.num) as 数量
FROM         dbo.SJ_Order INNER JOIN
                      dbo.SJ_CangChu ON SJ_Order.outer_iid = SJ_CangChu.tiaoma
                      where SJ_Order.status='WAIT_SELLER_SEND_GOODS'
                      group by SJ_CangChu.pinming, SJ_CangChu.xinghao, SJ_CangChu.tiaoma
SELECT     SJ_CangChu.pinming as 品名, SJ_CangChu.xinghao as 型号, SJ_CangChu.tiaoma as 条码,sum(SJ_Order.num) as 数量
FROM         dbo.SJ_Order INNER JOIN
                      dbo.SJ_CangChu ON SJ_Order.outer_sku_id = SJ_CangChu.tiaoma or SJ_Order.outer_iid = SJ_CangChu.tiaoma
                      where SJ_Order.status='WAIT_SELLER_SEND_GOODS'
                      group by SJ_CangChu.pinming, SJ_CangChu.xinghao, SJ_CangChu.tiaoma
SJ_Order的新旧2个字段对应(outer_sku_id ,SJ_Order.outer_iid )分别对应SJ_CangChu.tiaoma 
这2个SQL有什么区别

解决方案 »

  1.   

    结果几乎一样,只不过一个是or条件,一个是用的union all.
    如果把union all改为union 则结果一模一样了.不过貌似用or比较好.
      

  2.   

    select * from tablename where id=1 or id=2--等价于select * from tablename where id=1
    union all
    select * from tablename where id=2
      

  3.   


    第二个语句比第一个语句的连接条件多了一个...第一个是SJ_Order.outer_sku_id = SJ_CangChu.tiaoma 
    按照 这个其条件去匹配.. 连接
    第二个是 SJ_Order.outer_sku_id = SJ_CangChu.tiaoma or SJ_Order.outer_iid = SJ_CangChu.tiaoma
    按照 两个条件去匹配做连接至于on 后面跟 where 还是 and 我感觉在内连接这里没有什么区别...
    外连接上on后面跟and 是连接条件..on 后面跟where 是过滤条件
      

  4.   

    ON SJ_Order.outer_sku_id = SJ_CangChu.tiaoma or SJ_Order.outer_iid = SJ_CangChu.tiaoma
    用括号括起来看看
    ON (SJ_Order.outer_sku_id = SJ_CangChu.tiaoma or SJ_Order.outer_iid = SJ_CangChu.tiaoma)
    where SJ_Order.status='WAIT_SELLER_SEND_GOODS'