sql - 如何将多个重复行转换为 SQL (Postgres) 中的数组?

标签 sql arrays postgresql

我有下表一个:

 id │ value 
────┼───────
  1 │ a
  2 │ b

两个:

  id │ value 
─────┼───────
  10 │ a
  20 │ a
  30 │ b
  40 │ a
  50 │ b

One.value 具有唯一约束,但 Two.value 没有(一对多关系)。

哪个 SQL (Postgres) 查询将检索 作为数组 Twoid 其值匹配 One.value?我正在寻找的结果是:

          id │ value 
─────────────┼───────
  {10,20,40} │ a
     {30,50} │ b

最佳答案

检查 SQL Fiddle

SELECT array_agg(id) AS id, "value"
  FROM Two
 GROUP BY "value";

使用 value 作为标识符(此处为列名)是一种不好的做法,因为它是保留关键字。

关于sql - 如何将多个重复行转换为 SQL (Postgres) 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26471129/

相关文章:

sql - 如何在SQL查询中处理Excel文件?

mysql - 如何从 SQLite 中高度分割的人口数据计算平均年龄?

mysql - 创建与 SQL 中的条目排名位置相对应的列

javascript - Mobx:向可观察对象添加新的(数组)属性

postgresql - 在 Mondrain Schema 中定义时间维度?

mysql - mysql2 gem 可以与 Rails 中的 Postgres 数据库一起使用吗

java - 像语法、设计模式一样解析 SQL

c - 表达式必须有一个指向 C 中对象类型的指针 2

c++ - 反向 C 风格的字符串? - C++

ruby-on-rails - 使用 PostGIS 和 Rails 查找边界框内的所有项目