2012-12-06 85 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             | 

我需要我的結果太像這樣:

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

我已經試過幾件事,包括

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; 

這當然是錯誤的。感謝您的任何見解!

我忘了提及一個細節。我只想列出具有給定代碼的多個唯一名稱條目的結果。我更新了初始數據(這不會改變我想要的結果)。

[編輯錯別字]

+0

這不是實際的問題(這當然會只產生一個語法錯誤)我只是懷念那些我的代碼更通用。 – akronymn

回答

2

使用與COUNT(DISTINCT),具有:製作時

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