2012-06-15 4 views
22

값이 중복되지만 열 수 또는 열 수가 아닌 행 수를 선택하려고합니다. 예를 들어, 내 표는이처럼 보였다 :여러 열에서 동일한 값을 가진 행 찾기

ID  Address State Name 
------------------------------- 
0  7 Brown NY  John 
1  3 Red  WX  Jane 
2  7 Brown WX  Ted 
3  7 Brown NY  Fred 

내 질문은 다음과 같습니다

은 행의 주소 및 국가 필드가 다른 행의 주소 및 국가 필드를 일치하는 행에 대한 모든 ID의의를 찾을 수 있습니다.

이 질의에 대한 답변은 다음과 같습니다

ID Address State Name 
------------------------------ 
0  7 Brown NY  John 
3  7 Brown NY  Fred 

어떤 아이디어?

제안 : How to select multiple columns values same rows from single table

답변

27

는 다음과 같은 시도 :

SELECT A.* 
FROM YourTable A 
INNER JOIN (SELECT Address, State 
      FROM YourTable 
      GROUP BY Address, State 
      HAVING COUNT(*) > 1) B 
ON A.Address = B.Address AND A.State = B.State 
+0

확인 이러한 작업을 모두 잘있다. 나는 이걸 고수 할 것 같아. 감사. – gunr2171

+2

이런 종류의 시나리오를 처리하는 더 좋고 간단한 방법 http://stackoverflow.com/questions/13807314/find-rows-where-the-same-two-column-values-recur – himanshupareek66

+1

@ himanshupareek66 나는 그 차이를 보지 못한다. . 여기에 가입 한 이유는 op가 주소와 상태뿐만 아니라 중복 된 행 전체를 원했기 때문입니다. – Lamak

2
select * 
from #table1 
where Addr + St in (select Addr + St as FullAddr 
      from #table1 
      group by Addr + St 
      having count(Addr+St) > 1) 
+0

예, 이것이 저에게 효과적이었습니다. 감사합니다. – gunr2171

+2

SQL에서 문자열 연결 연산자는'+ '이 아닌'||'입니다. 그러나 문자열을 연결하는 대신에 (where add (addr, st) in (select addr, st from ...)) '을 사용하는 것이 더 좋을 것입니다 (주소와 상태의 조합에 문제가있을 수 있음) –

관련 문제