寻找SQL查询来显示两个表之间的数据不是在表之间共用的
问题描述:
我有两个表具有完全相同的结构。寻找SQL查询来显示两个表之间的数据不是在表之间共用的
表MasterList ACCT_ID(9) 名称(25) 地址(35) 市(15) 状态(2) 邮编(5)
和
表NewMasterList ACCT_ID( 9) 名称(25) 地址(35) 市(15) 状态(2) 邮编(5)
我需要一个查询来显示每个表中不在两个表中的所有记录的Acct_ID和Name。
答
我相信下面的查询应该帮助 -
select Acct_id,Name
from MasterList
where Acct_id not in (select distinct Acct_id from NewMasterList)
union
select Acct_id,Name
from NewMasterList
where Acct_id not in (select distinct Acct_id from MasterList)
欢呼
答
假设acct_ID
是主键:
SELECT COALESCE(ml.acct_ID, nml.acct_ID) AS AccountID
, COALESCE(ml.name, nml.name) AS Name
FROM MasterList ml
FULL OUTER JOIN NewMasterList nml ON nml.Acct_ID=ml.Acct_ID
WHERE nml.acct_ID IS NULL OR ml.acct_ID IS NULL
此查询工作以及提出的第二个查询。每个都返回了正确的数据,尽管第二个使用嵌套选择的联合在我的级别上更容易理解。 – Keniwan 2009-04-19 23:42:05
这个应该快得多,但这可能并不重要:这是你曾经做过的分析工作。 – 2009-04-20 00:17:02