0

我有一个包含 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
4

2 回答 2

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
于 2012-07-01T00:15:02.113 回答
2

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

SELECT id, GROUP_CONCAT(user) FROM table GROUP BY id
于 2012-07-01T00:13:28.303 回答