2017-04-04 151 views
0

請原諒我的SQL知識的基本水平......我至今仍在自學。根據單個列中的重複值返回記錄(多列)

我知道如果我運行以下操作,我會得到卡片,名稱和UID的完整列表。

SELECT 
Keycards.KeyNumber, Personnel.LastName, Personnel.FirstName, Personnel.SSN 
FROM  
Keycards INNER JOIN 
Personnel ON Keycards.UserID = Personnel.UserID 
ORDER BY KeyNumber 

我知道,如果我運行下面,我得到重複卡號的列表:基於

SELECT Keycards.KeyNumber 
FROM Keycards 
GROUP BY KeyNumber 
HAVING  COUNT(*) > 1 

所以,我怎麼會得到的只是一個重複的卡片號碼清單,姓名和UID's-只有在重複卡號...?

+0

這將是有益的,如果你發佈樣本數據和預期的輸出以及 – TheGameiswar

+0

見參考知道,怎麼問一個完美的問題的鏈接:HTTPS://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar

回答

3

將第二個查詢放入子查詢中,並使用它來限制結果集僅包含重複出現的關鍵數字。

SELECT k1.KeyNumber, 
     p.LastName, 
     p.FirstName, 
     p.SSN 
FROM Keycards k1 
INNER JOIN 
(
    SELECT KeyNumber 
    FROM Keycards  
    GROUP BY KeyNumber 
    HAVING COUNT(*) > 1 
) k2 
    ON k1.KeyNumber = k2.KeyNumber 
INNER JOIN Personnel p 
    ON k1.UserID = p.UserID 
ORDER BY k1.KeyNumber 
+1

太棒了!完美的作品。一旦我看到它的工作有意義。非常感謝!我有很多東西要學習。 –