sqlite查询字段封装成数组,sql怎么实现

有两张表:
1、用户表(id,name,age);
2、人物头像表(id,user_id,image)。
目的:一个用户能够保存多张头像
查询所有人,每条用户记录包含他的所有图片(如果存在),想要的查询结果是:[(name,age,[image,image,image……])]
求赐教

阅读 3.6k
2 个回答

使用group_concat函数以逗号分隔,在业务代码中split一下
两种写法,看看哪种速度快用哪种

select
    a.name,
    a.age,
    b.image
from 用户表 as a
left join (select user_id, group_concat(image) as image from 人物头像表 group by user_id) as b
on a.id=b.user_id


select
    a.name,
    a.age
    group_concat(b.image) as image
from 用户表 as a, 人物头像表 as b
where a.id=b.user_id
group by a.name, a.age

1,先定义个空数组 user_info=[]
2,把第一张表的内容user_id,name,age先加到数组中。会得到[(userid1,name1,age1,[]),(userid2,name2,age2,[])......],要有后面的空数组后来存放图片数据。
3,挨个匹配添加

# 遍历第二张表结果
for i in tb_er:
    # 匹配user_info表的userid
    for j in user_info:
        if i[1] == j[0]: 
            j[0] = j[3].append(i[2])

是个笨法,但是可以实现。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题