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

ehm*_*cky 2 sql arrays postgresql

我有下表One:

 id ? value 
????????????
  1 ? a
  2 ? b
Run Code Online (Sandbox Code Playgroud)

而且Two:

  id ? value 
?????????????
  10 ? a
  20 ? a
  30 ? b
  40 ? a
  50 ? b
Run Code Online (Sandbox Code Playgroud)

One.value有一个独特的约束,但没有Two.value(一对多的关系).

其中SQL(Postgres的)查询将检索作为数组idTwo其值匹配One.value?我要找的结果是:

          id ? value 
?????????????????????
  {10,20,40} ? a
     {30,50} ? b
Run Code Online (Sandbox Code Playgroud)

vye*_*rov 5

检查 SQL Fiddle

SELECT array_agg(id) AS id, "value"
  FROM Two
 GROUP BY "value";
Run Code Online (Sandbox Code Playgroud)

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