繁体   English   中英

使用group-by时如何将所有列聚合到SQL中的数组中?

[英]How to aggregate all columns into array in SQL when using group-by?

给定一个表:

物品 越南语 成本 唯一身份
水果 小岛 10 abc123
水果 小岛 8个 富99
水果 小岛 9 富99
水果 小岛 12 abc123
水果 小岛 14 abc123
蔬菜 3个 rr1239
蔬菜 3个 rr1239

通常当它不是 group by 我可以这样做:

SELECT * from mytable

但是如果我使用 group by 对具有相同项目名称的行进行分组,我不能直接这样做:

SELECT 
item, 
array_agg(vietnamese) as vietnamese
array_agg(cost) as cost
array_agg(unique_id) as unique_id
from mytable
GROUP BY item

是否有自动选择 SQL array_agg(*)中所有列的选项?

不,没有语法可以执行您描述的操作。 例如, COUNT(*)并不表示COUNT(a), COUNT(b), COUNT(c), … ,该上下文中的星号并不表示列的扩展。

一般来说,SQL 在元编程方面相当糟糕,即使用运行时信息来修改查询。 您不能 select 全部以“a”开头的列,或者匹配某种模式的表。 SQL 非常 static,除了少数例外,如SELECT *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM