请原谅我的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
那么我怎么能得到一个重复的卡号列表,WITH名称和UID' s-仅基于重复的卡号...... ??
答案 0 :(得分: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