2014-07-19 2 views
0

나는 테이블 학생이 있습니다.하나의 테이블에서 일치하지 않는 레코드를 찾는 방법

id | name | age | email | address 
------------------------------ 
1 | abc | 20 | [email protected] | street number10 
------------------------------ 
2 | def | 25 | [email protected] | street number12 
------------------------------ 
3 | hjk | 20 | [email protected] | street number10 
------------------------------ 
4 | umnnn | 20 | [email protected] | street number10 

필자는 행을 일치시키고 비교할 수없는 레코드를 원합니다.

예 :

행 3 (식 3) 행 4와 일치한다 (식 4), 4 번째 행의 최상의 값을 제공한다 이드의 값을 의미 = 4 명 = umnn, [email protected], 연령 및 주소가 아니어야합니다.

행 2 (id = 2)는 3 행 (id = 3)과 일치해야하며 3 행의 일치하지 않는 값은 id = 3, name = hkj, age = 20, email = hkj @ gmail.com, 주소 = 거리 번호 10.

이와 같이 첫 번째와 두 번째 행은 일치해야하며 두 번째 행 ID, 이름, 나이, 전자 메일의 값만 제공해야합니다.

+1

에 가입 할 수있는 1 차 및 2 차 일치? –

+0

두 행을 비교하는 것이 내 질문입니까? 어떤 단서를 말해주십시오. – user3189881

+0

질문을 편집하고 샘플 출력을 제공하십시오. –

답변

1

당신은 당신이 것을 어떻게 말할 수를 사용하여이 자기

select t1.id,case when t1.name!=t2.name then t1.name else NULL end as name 
     ,case when t1.age!=t2.age then t1.age else NULL end as age 
     ,case when t1.email!=t2.email then t1.email else NULL end as email 
     ,case when t1.address!=t2.address then t1.address else NULL end as address 
from test t1 
inner join test t2 
on t1.id=t2.id+1 

SQL Fiddle Demo

+0

유용하지만 마지막 행과 두 번째 행만 일치합니다. 그러나 역사에 대한 모든 타의 추종을 불허하는 결과를 원합니다. 두 번째와 세 번째 행과 일치해야합니다. 참고 : ID는 1,5,9,10,23과 같이 무작위로 표시 될 수 있습니다. – user3189881

관련 문제