我的 SQL 数据库中有两个相同的表,这些表分别由项目代码和数量组成。
我需要查看两个表中的哪些项目数量不同,哪些项目数量不同
不存在于另一个表中
我尝试在 ITEMCODE=ITEMCODE AND QTY<>QTY 上使用 FULL OUTER JOIN
它不工作
我得到的结果是这样的:
我的 SQL 数据库中有两个相同的表,这些表分别由项目代码和数量组成。
我需要查看两个表中的哪些项目数量不同,哪些项目数量不同
不存在于另一个表中
我尝试在 ITEMCODE=ITEMCODE AND QTY<>QTY 上使用 FULL OUTER JOIN
它不工作
我得到的结果是这样的:
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
我的幸运猜测是您过滤掉了代码列为空的行
尝试这样的事情:
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 子句中测试了不等式,因此您隐式只包括两个表中的项目。通过这种方式,您可以包含一个表中的项目,但另一个表中的项目不包括在内,或者数量不同。