【发布时间】:2019-12-24 08:05:48
【问题描述】:
我在mysql 有一个查询,想在PostgreSql 中做同样的事情。
这是查询:
-- mysql
SELECT cat.id, cat.category,
CONCAT('[',
GROUP_CONCAT(CONCAT('{"rate":"',mod.rate,'", "model_name":"', mod.modelName, '", "capacity":"',mod.capacity,'"}')), ']') vehicles
FROM categories cat
LEFT JOIN models mod
ON cat.id = mod.category_id
GROUP BY cat.id
这将得到如下输出:
id | category | vehicles
__________________________________________________________________________
1 | 2-wheeler | [ { "rate": "400", "model_name": "Pulsar 12", ... }, {...} ]
2 | 4-wheeler | [ { "rate": "800", "model_name": "Honda 12", ... }, {...} ]
我正在尝试与PostgreSql 相同。
这就是我卡住的地方:
-- postgres
SELECT cat.id, cat.category,
CONCAT('[',
array_to_string(CONCAT('{"rate":"',mod.rate,'", "model_name":"', mod.modelName, '", "capacity":"',mod.capacity,'"}')), ']') vehicles
FROM categories cat
LEFT JOIN models mod
ON cat.id = mod.category_id
GROUP BY cat.id
我不知道该怎么做。
还有表格:
型号:
id | modelName | rate | category_id
_____________________________________________
1 | Pulsar - 12 | 400 | 1
2 | Honda | 800 | 2
分类:
id | category
__________________
1 | 2-wheeler
2 | 4-wheeler
【问题讨论】:
-
我猜你正在寻找
string_agg聚合函数。
标签: sql postgresql group-concat array-agg