這是一個基本的左連接問題,我讀了很多文章解釋發生了什麼,但不知何故解決方案沒有點擊我的腦海。我的左表有獨特的記錄。我的右表有幾個記錄在左邊的每個記錄。左加入結果額外記錄
在我一直在閱讀的文章中,常常解釋爲左表有客戶,右表有訂單。這是非常相似,但不完全是我所面臨的。
在我的情況左表有唯一的記錄,右邊有重複的數據要遷移到數據庫左表所以我試圖編寫一個查詢,將加入共享的密鑰,但我只需要從右側記錄一條記錄。我得到的結果當然有多條記錄,因爲單個左邊的匹配在右邊多次。
我想我需要添加某種過濾,如Top(1),但仍閱讀/學習,並想從這個名單上的brainiacs反饋/方向。
以下是我與工作的一個簡單的模式:
DECLARE @Customer TABLE
(
Id int,
Name varchar(50),
email varchar(50)
)
INSERT @Customer VALUES(1, 'Frodo', '[email protected]')
INSERT @Customer VALUES(2, 'Bilbo', '[email protected]')
INSERT @Customer VALUES(3, 'Galadriel', '[email protected]')
INSERT @Customer VALUES(4, 'Arwen', '[email protected]')
INSERT @Customer VALUES(5, 'Gandalf', '[email protected]')
DECLARE @CustomerJobs TABLE
(
Id int,
email varchar(50),
jobname varchar(50)
)
INSERT @CustomerJobs VALUES(1, '[email protected]', 'RingBearer')
INSERT @CustomerJobs VALUES(2, '[email protected]', 'RingBearer')
INSERT @CustomerJobs VALUES(3, '[email protected]', 'RingBearer')
INSERT @CustomerJobs VALUES(4, '[email protected]', 'RingBearer')
INSERT @CustomerJobs VALUES(5, '[email protected]', 'RingBearer')
INSERT @CustomerJobs VALUES(6, '[email protected]', 'Burglar')
INSERT @CustomerJobs VALUES(7, '[email protected]', 'Burglar')
INSERT @CustomerJobs VALUES(8, '[email protected]', 'Burglar')
INSERT @CustomerJobs VALUES(9, '[email protected]', 'MindReader')
INSERT @CustomerJobs VALUES(10, '[email protected]', 'Evenstar')
INSERT @CustomerJobs VALUES(10, '[email protected]', 'Evenstar')
INSERT @CustomerJobs VALUES(11, '[email protected]', 'WhiteWizard')
INSERT @CustomerJobs VALUES(12, '[email protected]', 'WhiteWizard')
SELECT
Cust.Name,
Cust.email,
CJobs.jobname
FROM
@Customer Cust
LEFT JOIN @CustomerJobs CJobs ON
Cjobs.email = Cust.email
我與ROW_NUMBER玩弄過的分區()作爲也許我應該與ROW_NUMBER在分區加入到熱膨脹係數,而不是桌子本身?
我有另一個約束是我無法從右表中刪除重複項。
所以再次我爲簡單的問題表示歉意,並感謝您的幫助。
從右邊只需要一條記錄是什麼意思?哪個記錄?或者你是否只關心正確的桌子有任何記錄但不關心哪個記錄?在你的例子中,他們總是同一個人的記錄;你的所有數據都是這種情況嗎? – mayabelle
我只需要添加到我的左數據庫的工作名稱,因爲這是重複的權利,我不關心它使用哪個記錄我只是想要它一次。 – GPGVM