2017-04-04 98 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

太棒了!完美的作品。一旦我看到它的工作有意义。非常感谢!我有很多东西要学习。 –