在MySQL中如何从具有类似值

时间:2016-03-22 21:20:30

标签: mysql

我想使用相同的用户名提取特定行的所有唯一ID,然后将每个结果显示为一行。

例如......

这是我的表:

+----+------+
| id | name |
+----+------+
| 1  | Joe  |
| 2  | Amy  |
| 3  | Joe  |
| 4  | Amy  |
| 5  | Joe  |
| 6  | Amy  |
+----+------+

这是我想要的结果:

+------+-------+
| name | ids   |
+------+-------+
| Joe  | 1,3,5 |
| Amy  | 2,4,6 |
+------+-------+

如何在MySQL中提取此结果?

3 个答案:

答案 0 :(得分:3)

使用GROUP_CONCAT()DISTINCT子句聚合特定名称的唯一ID:

SELECT name, GROUP_CONCAT(DISTINCT id SEPARATOR ',') AS ids
FROM yourtable
GROUP BY name

要查看其使用情况,请参阅MySQL group_concat with select inside select

答案 1 :(得分:0)

您可以使用group_concat

SELECT   name, GROUP_CONCAT(id) AS ids
FROM     table
GROUP BY name

您也可以指定分隔符,但默认情况下是逗号。

您也可以指定DISTINCT,但由于 id 是唯一的,因此没有理由这样做:它只会减慢查询速度。

以下是SQL fiddle根据需要生成输出:

+------+-------+
| name | ids   |
+------+-------+
| Joe  | 1,3,5 |
| Amy  | 2,4,6 |
+------+-------+

答案 2 :(得分:0)

这是group_concat运算符的设计目标:

SELECT   name, GROUP_CONCAT(id) AS ids
FROM     mytable
GROUP BY name