我有一个包含列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
答案 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