[解決済み] 1つのカラムの複数の結果行を1つにまとめ、別のカラムでグループ化する[重複]。
2022-04-21 13:18:56
質問
このようなテーブルがあります
Movie Actor
A 1
A 2
A 3
B 4
ある映画の名前と、その映画に出演しているすべての俳優を取得したいのですが、結果はこのような形式にしたいのです。
Movie ActorList
A 1, 2, 3
どうすればいいのでしょうか?
どのように解決するのですか?
集計機能でより簡単に
string_agg()
(Postgres 9.0 以降)。
SELECT movie, string_agg(actor, ', ') AS actor_list
FROM tbl
GROUP BY 1;
は
1
で
GROUP BY 1
は位置参照で、ショートカットは
GROUP BY movie
この場合
string_agg()
はデータ型を期待します。
text
を入力とします。その他の型は明示的にキャストする必要があります (
actor::text
) -
ただし
への暗黙のキャストです。
text
が定義されている場合 - これは他のすべての文字型 (
varchar
,
character
,
"char"
)、その他いくつかのタイプがあります。
として
isapirのコメント
を追加することができます。
ORDER BY
節を使用して、ソートされたリストを取得することができます。のように。
SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list
FROM tbl
GROUP BY 1;
しかし、一般的にはサブクエリで行をソートする方が高速です。見てください。
関連
-
解決策:ユーザー root で localhost:3306 にある MySQL に接続できませんでした。
-
[解決済み] Oracle Trigger ORA-04098: トリガーが無効で、再バリデーションに失敗しました。
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
SQL-初心者のためのベスト入門SQLクエリ I
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] SQL Serverでシングルクォートをエスケープするにはどうすればよいですか?
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] 最初の行への結合方法
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する
-
[解決済み] PostgreSQL の 'group by' クエリで、文字列フィールドの文字列を連結する方法は?