我有兩個共享公用密鑰和幾個不同列的表。常見的關鍵是CampaignID
。其中一張桌子比另一張桌子稍微多一點CampaignID
,我想知道這兩張桌子之間的區別。目前,我使用LEFT OUTER JOIN
和CTE
先合併這兩個表格,然後通過檢查CTE
結果集中NULL
列中的上一步導出的結果集來計算CampaignID
列中的差異。例如,基於公共密鑰(Microsoft SQL Server)查找兩個表之間的差異
WITH CTE_Results
AS (SELECT t1.CampaignID AS cd_CampaignID,
t2.CampaignID AS cod_CampaignID,
t1.NAME,
t2.Vendor
FROM CampaignDetails AS t1
LEFT OUTER JOIN CampaignOnlineDetails AS t2
ON t1.CampaignID = t2.CampaignID)
-- Now that I have CTE result, I'll use another SELECT to find the difference
SELECT cd_CampaignID, cod_CampaignID
FROM CTE_Results
WHERE cod_CampaignID is NULL
但這對我來說似乎效率低下。是否有更高效/更快速的方式來比較Microsoft SQL Server中兩個表之間特定列的差異?謝謝您的回答!
注意:我是一般的Microsoft SQL Server和SQL新手。
此處不需要cte,但不會影響性能。您可以將where子句「where t.cod_CampaingID IS NULL」添加到主查詢中。但這與執行計劃不會有任何不同。如果你只想要兩個campaignID列,你應該從你的內部查詢中排除它們。 –