You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将关联查询的其他表数据封装为social_media对象返回?

实现嵌套结构结果的两种常用方法

方法一:在应用代码层处理(所有数据库通用)

先按原SQL查出平级数据,再在代码里把restaurants_social的字段单独封装成social_media对象。

举个Python代码示例:

# 假设query_results是SQL查询返回的平级数据列表
processed_data = []
for item in query_results:
    # 提取社交相关字段
    social_fields = {}
    # 替换成你实际的社交字段名,比如instagram、facebook等
    for field in ['instagram', 'facebook', 'twitter']:
        if field in item:
            social_fields[field] = item.pop(field)
    # 把封装好的对象加回去
    item['social_media'] = social_fields
    processed_data.append(item)

方法二:在SQL层直接生成嵌套结构(依赖数据库类型)

如果你的数据库支持JSON函数,可以直接在SQL里构造嵌套对象:

PostgreSQL 写法

用json_build_object把社交字段打包成JSON对象:

select
  e.*,
  json_build_object(
    'instagram', c.instagram,
    'facebook', c.facebook,
    'twitter', c.twitter
    -- 把restaurants_social表的所有字段都按这个格式添加
  ) as social_media
from
  restaurants e
  inner join restaurants_social c on e.id = c.id

MySQL 写法(5.7及以上版本)

用JSON_OBJECT函数实现:

select
  e.*,
  JSON_OBJECT(
    'instagram', c.instagram,
    'facebook', c.facebook,
    'twitter', c.twitter
    -- 依次添加所有社交相关字段
  ) as social_media
from
  restaurants e
  inner join restaurants_social c on e.id = c.id

内容的提问来源于stack exchange,提问作者chichi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:42:13