如何按字段分组并返回其他字段列表?

时间:2012-07-01 00:10:09

标签: mysql sql

我有一个包含列id,用户的表 我想按列ID进行分组,并为每个id显示一个用户列表(以逗号分隔)。

在最终输出中,我需要显示:

user joe - id 1
users jim, mark, john - id 2
user dave - id 3
....

我收到错误“基数违规:1242子查询返回超过1行”如果我尝试这样做:

SELECT id, (SELECT distinct(user) FROM mytable b where a.id = b.id)
FROM mytable a
GROUP BY id

2 个答案:

答案 0 :(得分:3)

由于您使用的是MySQL,因此有一个内置函数,即 GROUP_CONCAT 函数。例如,您有这样的记录:

ID      User
1       Joe
2       Jim
2       Mark
2       John
3       Dave

如果您尝试运行此查询:

SELECT ID, GROUP_CONCAT(User) Users
FROM tableName
GROUP BY ID

然后你会得到这样的结果:

ID         Users
1          Joe
2          Jim, Mark, John
3          Dave

答案 1 :(得分:2)

您正在寻找的是GROUP_CONCAT聚合函数:

SELECT id, GROUP_CONCAT(user) FROM table GROUP BY id