postgresql - Postgres LEFT JOIN 作为 json 对象属性
问题描述
我们有两张表:
book: id | title| author_id
authors: id | name
如何使用“作者”别名将一对一关系的作者加入到对象书的属性中:
{
id
title
author_id
author: {id, name}
}
当前查询结果为:
{
id
title
author_id
a_id
name
}
查询示例
SELECT b.id, b.title, a.id as a_id, a.name
FROM books b
LEFT JOIN author a ON a.id = b.author_id
WHERE b.id=1
解决方案
您可以使用字符串函数在一列中组合多个值:
SELECT b.id, title, author_id, format('{%s, %s}', a.id, a.name) AS author
FROM books b
LEFT JOIN author a ON a.id = b.author_id
WHERE b.id = 1
我怀疑您实际上是在寻找 JSON 格式:
SELECT b.id, title, author_id, json_build_object('id', a.id, 'name', a.name) AS author
FROM books b
LEFT JOIN author a ON a.id = b.author_id
WHERE b.id = 13
(在线演示)
推荐阅读
- javascript - 如何以角度为某些特定 URL 应用不同的(整页)背景?
- html - 引导程序:面板标题不中断
- c# - 在负载均衡器后面记录 Web 服务操作
- java - 排序流方法中的比较器
- python - 鼠标悬停时无法更改 tkinter Canvas 背景颜色?
- javascript - 预期“有效负载”是一个普通对象:MEAN
- if-statement - 为什么 [ ... ] 语法在 Makefile 中不起作用而 `test` 起作用?
- javascript - 在模板文字中包含括号 ()?
- c# - 从 openweathermap 的 5 天预报中每天只能检索 4 小时
- pagination - Angular HttpClient 数据源分页器不起作用