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

简化SQL内连接查询中的row_to_json写法:去除嵌套子查询

当然可以简化掉那层嵌套子查询!PostgreSQL的row_to_json()其实支持直接处理行数据,没必要多套一层子查询来包装字段。

给你几个更简洁的写法:

方法1:直接用行构造器配合row_to_json

SELECT t.id, row_to_json((p.id, p.name)) AS project
FROM "Things" t
INNER JOIN "Projects" p ON p.id = t.project_id
WHERE t.id = ?

不过要注意,这种写法生成的JSON键默认是f1、f2,如果想要保留id、name作为键名,得给行构造器指定类型别名:

SELECT t.id, row_to_json(ROW(p.id, p.name)::(id integer, name text)) AS project
FROM "Things" t
INNER JOIN "Projects" p ON p.id = t.project_id
WHERE t.id = ?

方法2:用json_build_object手动构造(可读性更强)

如果你希望代码更直观,直接用json_build_object来拼接键值对是个好选择,完全不需要子查询:

SELECT t.id, 
       json_build_object('id', p.id, 'name', p.name) AS project
FROM "Things" t
INNER JOIN "Projects" p ON p.id = t.project_id
WHERE t.id = ?

这几种写法都能实现原语句的功能,而且结构更清爽。其中json_build_object的方式最容易理解,推荐优先用这个~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:43:27