我有两张 table
CREATE TABLE service (
id SERIAL PRIMARY KEY,
image VARCHAR
);
CREATE TABLE service_description (
id SERIAL PRIMARY KEY,
service_id INTEGER,
language_id INTEGER,
title VARCHAR,
subtitle VARCHAR,
col_left TEXT,
col_right TEXT
);
我正在尝试将第二个表中的最后 4 列检索为以 language_id 作为键的对象。
以下查询有效(省略 col_left/right 以节省空间)
SELECT
s.*,
(
SELECT
json_object_agg(language_id, title) AS title
FROM
service_description sd
),
(
SELECT
json_object_agg(language_id, subtitle) AS subtitle
FROM
service_description sd
)
FROM
service s
虽然我这样做了
SELECT
s.*,
(
SELECT
json_object_agg(language_id, title) AS title,
json_object_agg(language_id, subtitle) AS subtitle
FROM
service_description sd
)
FROM
service s
我收到错误代码 42601 - 语法错误。怎么了?
最佳答案
查询中的问题是您在子查询
中选择了不止一列。尝试这样的事情
SELECT *
FROM service s
CROSS JOIN (SELECT Json_object_agg(language_id, title) AS title,
Json_object_agg(language_id, subtitle) AS subtitle
FROM service_description sd) B
关于sql - 子查询中的多个 json_object_agg 函数返回语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39181826/