关于mysql联合查询一对多的显示结果问题

有两张表,一张是user表,一张是user_tag表

user:结构内容如下:
id    name    age
1     有马公生 18
2     宫园薰   16

user_tag:结构内容如下:
userid    tagid    remake
1         10       10.2
1         20       10.3
1         30       10.4
2         20       10.3

需要在显示user列表时把tagid也要查出来

联合查询:

SELECT
    `user`.`id`,
    `user`.`name`,
    `user`.`age`,
    `user_tag`.`tagid`
FROM
    `user`
LEFT JOIN `user_tag` ON `user`.id = `user_tag`.`userid`

得到的结果是:

id    name      age    tagid
1     有马公生   18     10
1     有马公生   18     20
1     有马公生   18     30
2     宫园薰     16     20

这样看起来结果是重复了,如我需要显示
userid=1 的结果是

1    有马公生    18    10,20,30

这种或类似的格式,sql语句该怎么写呢?实在不行只能是在程序上实现了!

阅读 5.9k
1 个回答
SELECT
    `user`.`id`,
    `user`.`name`,
    `user`.`age`,
    GROUP_CONCAT(`user_tag`.`tagid`)
FROM
    `user`
LEFT JOIN `user_tag` ON `user`.id = `user_tag`.`userid`
GROUP BY `user`.`name`
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进