MYSQL组由一列产生,但对于唯一的第二列是分开的

时间:2012-12-06 20:30:53

标签: mysql sql

我知道那里有类似的问题,但我无法在其中找到这种特殊情况。如果有人知道这个问题的答案请与我联系。否则就这样了。

我有一个表,它有两个我感兴趣的字段 - 代码和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;

当然哪个错了。感谢您的任何见解!

[编辑]我忘了提一个细节。我只想列出具有多个给定代码的唯一名称条目的结果。我已经更新了初始数据(这不会改变我想要的结果)。

[为拼写错误编辑]

1 个答案:

答案 0 :(得分:2)

使用带有COUNT的HAVING(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