gpt4 book ai didi

sql - 从内连接简化 SQL row_to_json

转载 作者:行者123 更新时间:2023-11-29 11:56:17 24 4
gpt4 key购买 nike

我们有一个表 Things,其中包含通过 thing.project_id 属于表 Projects 的实例。

当查询 Things 的实例时,我们将返回父 Project 记录的 json 表示形式作为该实例的值。

目前看起来像:

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

这工作正常,但似乎可以简化。

有没有办法在保持清晰的同时消除对中间变量(本例中的a)的需要?

最佳答案

不确定您到底想要什么,但是:

SELECT t.id, to_jsonb(p) as project
FROM "Things" t
JOIN "Projects" p ON p.id = t.project_id
WHERE t.id = ?

要从 project 表中排除列,您可以将 - 运算符与 jsonb 结合使用:

SELECT t.id, to_jsonb(p) - 'id' as project
FROM "Things" t
JOIN "Projects" p ON p.id = t.project_id
WHERE t.id = ?

您可以通过这种方式删除多列:

SELECT t.id, to_jsonb(p) - array['id', 'some_column'] as project
FROM "Things" t
JOIN "Projects" p ON p.id = t.project_id
WHERE t.id = ?

关于sql - 从内连接简化 SQL row_to_json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49412666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com