关于mysql联合查询一对多的显示结果问题
本文介绍了关于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屋!
查看全文