我对两个数据库有相同的查询,但是在第一个数据库中可以找到我的数据,而在第二个数据库中则找不到。是否可以在这两个基础上构建,以便我可以过滤第一个基础而不是第二个基础中存在的所有基础。这些是我的SQL查询:
use firstDB;
SELECT A_ANSPRECHPARTNER.AAS_ID FROM A_ANSPRECHPARTNER LEFT OUTER JOIN A_ADRESSEN ON A_ANSPRECHPARTNER.AAS_ADR_ID = A_ADRESSEN.ADR_ID WHERE ADR_Nr = 106740
use secondDB;
SELECT A_ANSPRECHPARTNER.AAS_ID FROM A_ANSPRECHPARTNER LEFT OUTER JOIN A_ADRESSEN ON A_ANSPRECHPARTNER.AAS_ADR_ID = A_ADRESSEN.ADR_ID WHERE ADR_Nr = 106740
当前结果
答案 0 :(得分:1)
如果这些数据库位于同一服务器上,则可以在引用该表时将每个查询放在指定数据库名称的子查询中。然后,将firstDB上的子查询与secondDB上的子查询左联接,过滤掉firstDB中有记录的记录,而secondDB中没有记录。
SELECT DB_1.*
FROM (
SELECT A_ANSPRECHPARTNER.AAS_ID
FROM firstDB.dbo.A_ANSPRECHPARTNER
LEFT OUTER JOIN firstDB.dbo.A_ADRESSEN ON A_ANSPRECHPARTNER.AAS_ADR_ID = A_ADRESSEN.ADR_ID
) DB_1
LEFT JOIN (
SELECT A_ANSPRECHPARTNER.AAS_ID
FROM secondDB.dbo.A_ANSPRECHPARTNER
LEFT OUTER JOIN secondDB.dbo.A_ADRESSEN ON A_ANSPRECHPARTNER.AAS_ADR_ID = A_ADRESSEN.ADR_ID
) DB_2 ON DB_1.ADR_Nr = DB_2.ADR_Nr
WHERE DB_2.ADR_Nr IS NULL
AND DB_1.ADR_Nr = 106740
您只需删除AND DB_1.ADR_Nr = 106740
即可在firstDB中找到所有不在secondDB中的记录。如果这些数据库位于不同的服务器上,则必须设置一个链接服务器,并将其添加到表引用的开头。