MySQL查询数据主表数据不变,外表中【符合条件】数据变为一个个数组的形式展示出来

主表: user

id        name   age

1    张三     12
2    李斯     10

外表:user_img

id        img     user_id

1    http://123.jpg  1
2    http://456.jpg  2

3    http://789.jpg  1

得到结果:

id        name   age      imgs

1    张三     12     http://123.jpg,http://789.jpg
2    李斯     10     http://456.jpg

SQL

SELECT u.* ,GROUP_CONCAT(ui.img order by ui.id asc) from user u
left JOIN user_img ui on ui.user_id=u.id
GROUP BY u.id

注:

  将符合ui.user_id=u.id的user_img表里面的img通过GROUP_CONCAT合并在一块了,合并时按照user_img里面的id进行排序 ,最后根据user 里面的id进行分组

group_concat()

功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

posted @ 2020-03-29 20:22  Angry-rookie  阅读(482)  评论(0)    收藏  举报