ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

PostgreSQLで複数行の検索結果を文字で結合して、1行として取得する方法

PostgreSQLで検索した結果が複数行になることはわかっていましたが、プログラムで処理する都合上、結果を1行として取得したくなりました。
以前方法を見た覚えがあったので、調べなおした結果、以下のようにしたらできました。

SELECT array_to_string((SELECT array_agg(col1) FROM table1 WHERE id = 45), ',') AS oneline;    

array_aggで複数行の検索結果を配列に直して、array_to_stringで配列を結合して1行としています。
これを以前から知っていたら、プログラムでループして結合する手間が省けていました。
集約関数

配列関数と演算子