サブクエリ結果を配列に変換する

サブクエリの結果を配列に変換

サブクエリの結果(複数行)がクエリの単一行として返されるようにします。 例えば。

select u.url, (select c.categoryid from category c
where c.categoryid = u.categoryid) from url u

URLに複数のカテゴリが含まれている場合、サブクエリは次のように複数の行を返します
P.Sサブクエリは複数の行を返しますほとんどのデータベースではサポートされていませんが、PostgreSQLはサポートされています

url | categoryid
---------------------
1   |  1
1   |  2
2   |  1

私が望んでいた結果は次のとおりです

url | categoryid
---------------------
1   |  1,2
2   |  1

oracleやmysqlのような他のデータベースでどれだけ簡単に実現できるかわかりませんが、PostgreSQLはArrayデータ型を提供しており、配列を使用すると必要なものを簡単に取得できます。 クエリをに変更する必要があります

select u.url, (select array(select c.categoryid from category c
where c.categoryid = u.categoryid))as categoryid from url u

結果〜

url | categoryid
---------------------
1   |  {1,2}
2   |  1

完了〜PostgreSQL Array Rock〜