如何在SQL(Postgres)中将几个重复的行转换为数组?

时间:2014-10-20 17:07:51

标签: sql arrays postgresql

我有下表One

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

Two

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

One.value有一个唯一约束,但不是Two.value(一对多关系)。

哪个SQL(Postgres)查询将检索作为数组 id的{​​{1}},其值与Two匹配?我要找的结果是:

One.value

1 个答案:

答案 0 :(得分:5)

检查 SQL Fiddle

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

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