2011-01-23 4 views
3

이 질문은 그래서 예를주지 방법 문구 확실하지 않다 : taggertaggee :특정 열에 여러 개의 조회가있는 행만 선택하려면 어떻게해야합니까?

두 개의 열이 tagged라는 테이블이 있다고 가정. 여러 행에있는 taggee (s)을 반환하려면 SQL 쿼리의 모양이 어떻습니까? 즉, 그들은 두 번 이상 tagger에 의해 태그되었습니다.

'일반'SQL 쿼리를 원하고 특정 DBMS에서만 작동하는 것이 아닙니다.

편집 : " 타거로 태그가 두 번 이상 추가되었습니다."

답변

9

HAVING 집계 함수의 결과에 작동 할 수 이상의 술래에 의해 태그 된 모든 태그 된 사용자를 줄 것이다. 이 같은 데이터를 그래서 만약 :

Row tagger | taggee 
     --------+---------- 
1.  Joe  | Cat 
2.  Fred | Cat 
3.  Denise | Dog 
4.  Joe  | Horse 
5.  Denise | Horse 

그것은 당신이 고양이, 을 원하는 같은 소리.

여러 행에있는 taggee의, 당신은 실행할 것이다 활용하려면 다음

말했다되고 그건
SELECT taggee, count(*) FROM tagged GROUP BY taggee HAVING count(*) > 1 

, 당신은 "특정 컬럼에 대해 여러 개의 안타 만 행을 선택"말 할있는 행 너는 원하는가? 행을 원하십니까 또는 행 ?

+0

taggee를 기준으로 그룹화하면 동일한 태그 지정자에 대해 중복되지 않도록 할 수 있습니다. –

+0

오, 그게 무슨 행에 좋은 지적이야. 나는 특정한 행을 원하지 않기 때문에 이것을 고려하지 않았다. 단지 taggees의 목록 만. 고마워. – styfle

+0

@OMG 혼란스러운 조랑말. 나는 아직도 무엇이 물어지고 있는지 확실히 모른다. 그것은 "* a * tagger에 의해 2 번 이상 태그가 붙어 있습니다."라고 말하면서 이것을 요구 사항으로 해석하지 않았습니다. – Nicole

0
select distinct t1.taggee from tagged t1 inner join tagged t2 
     on t1.taggee = t2.taggee and t1.tagger != t2.tagger; 

당신에게

관련 문제