sql - PostgreSQL 子查询数组返回整行而不是单列
问题描述
我有一个看起来像这样的查询:
SELECT
s.*,
array(
SELECT m.id
FROM swarm_machine sm
JOIN machine m
ON sm.machine_id = m.id
WHERE swarm_id = s.id
) as machines
FROM swarm s
WHERE group_id = 48
而不是只返回机器 ID SELECT m.id
,我想返回行中的所有列SELECT m.*
。PostgreSQL 似乎不允许这样做,但我希望社区可以帮助解决这个问题。
我总是可以用 2 个查询来做到这一点,但如果 PostgreSQL 能为我做到这一点,我宁愿避免往返。
解决方案
Postgres 允许它。只需参考记录:
SELECT s.*,
ARRAY(SELECT m
FROM swarm_machine sm JOIN
machine m
ON sm.machine_id = m.id
WHERE swarm_id = s.id
) as machines
FROM swarm s;
这是一个 SQL 小提琴。
推荐阅读
- android - 如果我的应用程序在我的 Android Studio 模拟器上运行缓慢,我的应用程序在设备上是否会运行缓慢?
- java - 在尤里卡服务器中添加尤里卡客户端时出错,客户端模块无法启动
- mysql - mysql concat csv 从两列转换成密钥对
- ios - Apple 如何在 iOS 12 的 iBooks 应用中为一本书创建阴影效果?
- sql - 我可以在这个维度模型中改进什么?
- mysql - Calculate billing usage for current month
- tensorflow - CUDA 如何影响深度学习性能?
- ethereum - 有没有办法将以太坊令牌列入黑名单
- api - 如果我更改我的 Twitter 用户名,API 密钥会更改吗?
- javascript - 遵循 Leaflet JS 教程的“this.update 不是函数”