3

重複するマルチパート識別子の特定のフィールドを選択する必要があります。

重複を正しく取得するためのクエリがあります。

SELECT   b.MemEmpID, b.LastName, b.FirstName
               FROM     table1 As b
               GROUP BY b.MemEmpID, b.LastName, b.FirstName
               HAVING   Count(*) > 1

しかし、重複を見つけた後、同じテーブルからより多くの情報を取得する必要がありますが、重複があるマルチパート識別子についてのみです。次のようなものです。

誰かがこれの正しい構文を教えてくれますか?

SELECT a.memempid, a.depkey, a.lastname, a.firstname, a.birthdate, a.memrelation
FROM   table1 As a
INNER JOIN(SELECT   b.MemEmpID, b.LastName, b.FirstName
               FROM     table1 As b
               GROUP BY b.MemEmpID, b.LastName, b.FirstName
               HAVING   Count(*) > 1)
ON b.memempid = a.memempid
AND b.lastname = a.lastname
AND b.firstname = a.firstname
4

1 に答える 1

2

あなたは本当に近かった。サブクエリをエイリアスする必要があります。

table1 As bグループ化によってスコープが失われる()ため、括弧で囲まれたサブクエリをエイリアスする必要があります。再利用できますb-返された列についてのみ認識しますが、明確にするために、あいまいさを解消すること(...) as cにしました。

SELECT a.memempid, a.depkey, a.lastname, a.firstname, a.birthdate, a.memrelation
FROM   table1 As a
INNER JOIN
    (SELECT   b.MemEmpID, b.LastName, b.FirstName
     FROM     table1 As b
     GROUP BY b.MemEmpID, b.LastName, b.FirstName
     HAVING   Count(*) > 1
    ) as c
ON c.memempid = a.memempid
    AND c.lastname = a.lastname
    AND c.firstname = a.firstname
于 2013-03-05T14:43:33.580 に答える