2012-12-06 6 views
0

비슷한 질문이 있지만 그 중 특정 사례를 찾을 수 없습니다. 누군가 대답하는 곳을 알고 있다면 나를 연결해주세요. 그렇지 않으면 여기에 간다.MYSQL 그룹은 하나의 열로 결과가 있지만 고유 한 두 번째 열로 구분됩니다.

나는 관심이있는 두 개의 필드 (코드 및 ID)가있는 테이블이 있습니다. id 필드와 결합하여 기본 키를 만드는 회사 필드가 있지만 이들 중 어느 것도 고유하지 않습니다.

같은 코드와 관련된 이름이 여러 개있는 모든 코드와 이름의 목록이 필요합니다. 내 데이트는 다음과 같습니다 그래서 만약 :

| code   | name   | company           | 
+---------------+---------------+----------------------------------------------------+ 
| 00009   | name   | 1             | 
| 00009   | name   | 2             | 
| 00009   | name   | 3             | 
| 00009   | name   | 4             | 
| 00009   | diff name  | 1             | 
| 00014   | Foo   | 2             | 
| 00014   | foo   | 3             | 
| 00014   | foo   | 4             | 
| 00014   | foo   | 5             | 
| 00014   | foo   | 6             | 
| 00015   | barbaz  | 1             | 
| 00015   | barbaz  | 2             | 
| 00015   | barbaz  | 3             | 
| 00015   | barbaz  | 4             | 
| 00015   | bar baz  | 5             | 
| 00017   | foo   | 1             | 
| 00018   | bar   | 1             | 

을 내 결과도 같이해야합니다 : 나는 물론 잘못

SELECT DISTINCT t1.code, t1.name from items t1 
    inner join (select t2.code from items t2 group by t2.name) t2 
    on (t1.code = t2.code)  
    group by t1.code order by t1.code; 

등 여러 가지를 시도

| code   | name                | 
+---------------+-------------------------------------------------------------------+ 
| 00009   | name                | 
| 00009   | diff name               | 
| 00014   | Foo                | 
| 00014   | foo                | 
| 00015   | barbaz               | 
| 00015   | bar baz               | 

. 어떤 통찰력을 가져 주셔서 감사합니다!

[편집] 하나의 세부 사항을 언급하는 것을 잊었습니다. 주어진 코드에 대해 하나 이상의 고유 한 이름 항목이있는 결과 만 나열하려고합니다. 초기 데이터 (원하는 결과는 변경되지 않음)를 업데이트했습니다. [오타 수정]

+0

(즉 물론 단지 구문 오류가 발생할 것이다) 난 그냥 사람들을 놓친 더 일반적인 제 코드. – akronymn

답변

2

사용 (DISTINCT) COUNT와 HAVING : 할 때 실제 문제가 아니다

SELECT code, name 
FROM items 
WHERE code IN (
    SELECT code 
    FROM items 
    GROUP BY code 
    HAVING count(DISTINCT name) > 1 
) t1 
ORDER BY code, name 
+0

그랬습니다. count() 호출에서 distinct 키워드를 사용할 수 있는지 몰랐습니다. 굉장해, 고마워! – akronymn

관련 문제