ホームページ >データベース >mysql チュートリアル >PostgreSQLのGROUP BYクエリ内で文字列を連結するにはどうすればよいですか?
GROUP BY
クエリで文字列を連結するにはどうすればよいですか? 質問:
PostgreSQL で、GROUP BY
クエリ内のフィールドの文字列を連結するにはどうすればよいですか?
例:
次のスキーマを持つテーブルを考えてみましょう:
ID | COMPANY_ID | EMPLOYEE |
---|---|---|
1 | 1 | Anna |
2 | 1 | Bill |
3 | 2 | Carol |
4 | 2 | Dave |
目的は、COMPANY_ID
でグループ化し、EMPLOYEE
の値を連結して、次のようにすることです:
COMPANY_ID | EMPLOYEE |
---|---|
1 | Anna, Bill |
2 | Carol, Dave |
解決策:
PostgreSQL 9.0 以降:
string_agg(expression, delimiter)
関数を使用します: <code class="language-sql">SELECT company_id, string_agg(employee, ', ') FROM mytable GROUP BY company_id;</code>
PostgreSQL 8.4.x:
array_agg(expression)
関数を使用して array_to_string()
を結合します: <code class="language-sql">SELECT company_id, array_to_string(array_agg(employee), ', ') FROM mytable GROUP BY company_id;</code>
PostgreSQL 8.3.x 以前:
<code class="language-sql">CREATE AGGREGATE textcat_all( basetype = text, sfunc = textcat, stype = text, initcond = '' ); SELECT company_id, textcat_all(employee) FROM mytable GROUP BY company_id;</code>
以上がPostgreSQLのGROUP BYクエリ内で文字列を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。