2010-02-22 8 views
2

"작업"이라는 테이블이 있습니다. 이 테이블은 다음과 같은 필드가 있습니다SQL - 비슷한 값을 가진 레코드 찾기

  • ID
  • 유형 ID

가 어떻게이 유형 ID의 두 개 이상의 작업이 모든 작업을 찾을 수 있습니까 설명? 쿼리 할 TypeID가 없습니다. 오히려 여러 작업에 사용되는 TypeID가있는 작업을 나열하려고합니다. 어떻게해야할지 모르겠습니다.

도움 주셔서 감사합니다.

+0

어떤 데이터베이스의 경우 : 다음으로 그룹을 사용하지 않고 그것을 할 수있는 방법은 두 가지가 있습니다

SELECT t.description FROM TASKS t GROUP BY t.description HAVING COUNT(t.typeid) > 1 

답변

3
SELECT 
    * 
FROM 
    Tasks 
WHERE TypeID IN 
    (SELECT TypeID FROM Tasks 
    GROUP BY TypeID HAVING COUNT(*) > 1) 
1

사용 :

# faster solution 
SELECT A.* 
FROM Tasks A, 
    Tasks B 
WHERE B.id != A.id AND B.TypeID = A.TypeID 

또는

SELECT A.* 
FROM Tasks A, 
WHERE EXISTS (SELECT 1 FROM Tasks B WHERE B.id != A.id AND B.TypeID = A.TypeID) 
+0

ID별로 그룹화하는 것이 좋지 않습니다. 고유 한 키로 그룹화하고 있으므로 카운트가 1보다 큰 그룹이 될 수는 없습니다. –

+0

@Timothy : Corrected. –

+0

이 쿼리는 Description-to-TypeID가 1 대 1 인 것으로 가정합니다.하지만 지금 생각납니다. :) –

0

?
관련 문제