這是我所擁有的一個非常簡化的版本。SQL Union但過濾出部分重複文件
我有2個數據庫表人員和聯繫人。 人是原始表,但聯繫人是用於覆蓋People表中數據的新表(這些是真實場景中的不同數據庫)
初始加載所有人員記錄被複制到聯繫人表但在初始加載新人後可以添加到人員或聯繫人表格以及設置爲刪除的聯繫人。
我希望所有的人返回,但我想要的聯繫人表是壓倒一切的一個例如
例子。
百姓餐桌
PersonGuid | PersonId | FirstName | LastName
-----------|----------|-------------|-----
1 xxxx1 | 1 | John | Smith
2 xxxx2 | 2 | Jane | Doe
3 xxxx3 | 3 | John | Doe
4 xxxx4 | 4 | Alice | James
5 xxxx5 | 5 | Claire | Wheeler
聯繫表 (Jane Doe的設置爲刪除,李四不存在由於作爲當時INTIAL導入後添加和艾瑪·格林已被添加。刪除爲NULL,對於尚未被觸及的)
ID | LinkedId | FirstName | LastName | Deleted
-----------|----------|-------------|----------|----------
1 xxxx1 | 1 | John | Smith | NULL
2 xxxx2 | 2 | Jane | Doe | 1
3 xxxx3 | NULL | Emma | Green | 0
4 xxxx4 | 4 | Alice | James | 0
5 xxxx5 | 5 | Claire | Wheeler | NULL
我想返回是: (所有的記錄,但與李四設爲刪除,因爲她是在聯繫人表)
ID | LinkedId | FirstName | LastName | Deleted
-----------|----------|-------------|----------|----------
1 xxxx1 | 1 | John | Smith | NULL
2 xxxx2 | 2 | Jane | Doe | 1
3 xxxx3 | 3 | John | Doe | 0
4 xxxx4 | NULL | Emma | Green | 0
5 xxxx5 | 4 | Alice | James | 0
6 xxxx6 | 5 | Claire | Wheeler | NULL
但是我得到是: (Jane Doe的兩次)
ID | LinkedId | FirstName | LastName | Deleted
-----------|----------|-------------|----------|----------
1 xxxx1 | 1 | John | Smith | NULL
2 xxxx2 | 2 | Jane | Doe | 1
3 xxxx2 | 2 | Jane | Doe | 0
4 xxxx3 | 3 | John | Doe | 0
5 xxxx4 | NULL | Emma | Green | 0
6 xxxx5 | 4 | Alice | James | 0
7 xxxx6 | 5 | Claire | Wheeler | NULL
我想聯盟兩個表,但我不知道如何過濾它使聯繫人數據重寫人員數據,但也從兩個表中獲取所有數據?
Select PersonGuid as Id,
Personid,
Firstname,
LastName,
cast(0 as bit) as deleted
From DB1.People
Union
Select
Id,
LinkedId as PersonId,
FirstName,
LastName,
Deleted
from DB2.Contacts
我試過搜索,但我不知道要搜索什麼,所以我的條款可能是錯誤的。
編輯 - 真正的查詢是沒有像我的例子那麼簡單,而from是每個查詢約6個表的連接。我試圖做一個簡單的例子來說清楚,但不知道這是否使解決方案不同?
是李四和李四意味着有相同的ID或者是一個錯字? Emma Green和John Doe也有同樣的問題嗎? –
剛注意到這一點。不,他們不打算擁有相同的ID。我現在要編輯 – Bex