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

查看:428
本文介绍了关于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语句该怎么写呢?实在不行只能是在程序上实现了!

解决方案

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`

这篇关于关于mysql联合查询一对多的显示结果问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆