gpt4 book ai didi

sql - 比较两个表,查找丢失的行和不匹配的数据

转载 作者:行者123 更新时间:2023-12-04 21:22:44 25 4
gpt4 key购买 nike

我想比较两个表并获得一组结果,其中查找值不匹配以及其他表中缺少键值。第一部分在以下查询中可以正常工作:

SELECT * FROM (
SELECT mID, mLookup
FROM m) t1

FULL OUTER JOIN (
SELECT aID, aLookup
FROM a) t2

ON t1.mID = t2.aID

WHERE
t1.mID = t2.aID AND
t1.mLookup <> t2.aLookup


但是,它不会返回从t1和t2开始的行,其中在另一个表中没有对应的ID(由于 ON t1.mID = t2.aID)。

如何在同一查询中实现两者?

最佳答案

删除WHERE子句的ID部分。 FULL OUTER JOIN ON t1.mID = t2.aID足以将表链接在一起。 FULL OUTER JOIN将返回联接中的两个表,即使其中一个不匹配。

但是,WHERE t1.m_ID = t2.aID子句将结果限制为两个表中都存在的ID。这有效地导致FULL OUTER JOIN充当INNER JOIN

换一种说法:

SELECT * FROM (
SELECT mID, mLookup
FROM m) t1

FULL OUTER JOIN (
SELECT aID, aLookup
FROM a) t2

ON t1.mID = t2.aID

WHERE
--t1.mID = t2.aID AND -- remove this line
t1.mLookup <> t2.aLookup


-编辑-

重新阅读您的问题,您只想要不匹配的内容。在这种情况下,您需要搜索任何一方的ID为NULL的位置:

SELECT * FROM (
SELECT mID, mLookup
FROM m) t1

FULL OUTER JOIN (
SELECT aID, aLookup
FROM a) t2

ON t1.mID = t2.aID

WHERE
t1.mID IS NULL OR
t2.mID IS NULL OR
t1.mLookup <> t2.aLookup

关于sql - 比较两个表,查找丢失的行和不匹配的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15926953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com