我的SQL数据库中有两个相同的表,这些表由Item Code和QTY组成。
我需要查看两个表中哪些项具有不同的数量和
的项目在其他表中不存在
我尝试在ITEMCODE = ITEMCODE和QTY<> QTY
上使用FULL OUTER JOIN它不工作
我得到的结果是这样的:
答案 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子句中对不等式进行了测试,因此您隐式只包含两个表中的项。这样,您就可以包含一个表中的项目,但不包括另一个表中的项目,或者包含数量上的差异。