内部联接在不同的qaunties上

时间:2013-01-21 15:20:44

标签: sql-server outer-join

我的SQL数据库中有两个相同的表,这些表由Item Code和QTY组成。

我需要查看两个表中哪些项具有不同的数量和

的项目

在其他表中不存在

我尝试在ITEMCODE = ITEMCODE和QTY<> QTY

上使用FULL OUTER JOIN

它不工作

我得到的结果是这样的:

http://www.sendspace.com/file/nmb7yu

2 个答案:

答案 0 :(得分:1)

select *
from table1 a full outer join table2 b 
on a.code = b.code 
where a.qty <> b.qty or a.code is null or b.code is null

我的幸运猜测是你过滤掉了代码列为空的行

答案 1 :(得分:1)

尝试这样的事情:

SELECT  c.Code ,
        t1.Code ,
        t1.Qty ,
        t2.Code ,
        t2.Qty
FROM    ( SELECT    Code
          FROM      dbo.Table1
          UNION
          SELECT    Code
          FROM      dbo.Table2
        ) c
        LEFT OUTER JOIN dbo.Table1 t1 ON c.Code = t1.Code
        LEFT OUTER JOIN dbo.Table2 t2 ON c.Code = t2.Code
WHERE   t1.Code IS NULL
        OR t2.Code IS NULL
        OR t1.Qty <> t2.Qty

由于您在WHERE子句中对不等式进行了测试,因此您隐式只包含两个表中的项。这样,您就可以包含一个表中的项目,但不包括另一个表中的项目,或者包含数量上的差异。