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有什么区别
union all
select * from tablename where id=2
按照 这个其条件去匹配.. 连接
第二个是 SJ_Order.outer_sku_id = SJ_CangChu.tiaoma or SJ_Order.outer_iid = SJ_CangChu.tiaoma
按照 两个条件去匹配做连接至于on 后面跟 where 还是 and 我感觉在内连接这里没有什么区别...
外连接上on后面跟and 是连接条件..on 后面跟where 是过滤条件
如果把union all改为union 则结果一模一样了.不过貌似用or比较好.
用括号括起来看看
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'
一个是2个分别group,然后再union all
一个是整个一起group
结果当然不一样了