2015-01-10 2 views
2

특정 열에 중복 값이있는 다른 행의 ID와 함께 테이블의 각 행을 반환하려고합니다. 나는 충분히 쉽게 모든 중복을 얻을 수 있지만 더 많은 데이터모든 행에 대해 모든 중복을 반환하는 쿼리

예 데이터를 반환해야합니다

-------------------------------- 
| Firstname | Lastname | ID | 
-------------------------------- 
| John  | Smith  | 1 | 
-------------------------------- 
| Jane  | Smith  | 2 | 
-------------------------------- 
| Bill  | Smith  | 3 | 
-------------------------------- 

내가 성에서 일치하는 경우, 내가

ID Firstname Lastname dup_Fname dup_Lname dup_id 
1  John  Smith  Jane  Smith  2 
1  John  Smith  Bill  Smith  3 
2  Jane  Smith  John  Smith  1 
2  Jane  Smith  Bill  Smith  3 
3  Bill  Smith  John  Smith  1 
2  Bill  Smith  Jane  Smith  2 

정말만을 반환하고 싶습니다 ID를 반환해야하지만 예제에서는 명확하게하기 위해 이름을 포함해야합니다.

답변

1

다른 별칭을 사용하여 테이블을 자신과 결합하면됩니다 :

SELECT T1.ID, T1.FirstName, T1.LastName, 
     T2.FirstName as dup_FName, T2.LastName as dup_LName, T2.ID as dup_id 
FROM TableName T1, TableName T2 
WHERE T1.ID <> T2.ID 
ORDER BY T1.ID,T2.ID 

결과 :

ID FIRSTNAME LASTNAME DUP_FNAME DUP_LNAME DUP_ID 
1 John  Smith  Jane  Smith  2 
1 John  Smith  Bill  Smith  3 
2 Jane  Smith  John  Smith  1 
2 Jane  Smith  Bill  Smith  3 
3 Bill  Smith  John  Smith  1 
3 Bill  Smith  Jane  Smith  2 

SQL Fiddle 결과를 참조하십시오.

+0

감사합니다. 솔루션을 너무 망설였습니다. 그래도성에 맞추기위한 작은 조정이 하나 있습니다. t1.LastName = t2.LastName 조건 추가 – user4440261

관련 문제