我想使用相同的用户名提取特定行的所有唯一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中提取此结果?
答案 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