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