[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
2022-03-17 05:36:15
質問
使用方法
MySQL
というようなことができる。
SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;
私の出力
shopping
fishing
coding
が、その代わりに1行、1列が欲しいだけです。
期待される出力
shopping, fishing, coding
理由は、複数のテーブルから複数の値を選択しているため、すべての結合の後に、私が望むよりも多くの行があることです。
の関数を探したんだけど
MySQLドキュメント
というのがないようで
CONCAT
または
CONCAT_WS
関数は結果セットを受け取ります。
そこで、どなたかこの方法をご存じないでしょうか?
どのように解決するのですか?
を使用することができます。
GROUP_CONCAT
:
SELECT person_id,
GROUP_CONCAT(hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
でルートヴィヒが述べているように
のコメントです。
を追加することができます。
DISTINCT
演算子で重複を避けることができます。
SELECT person_id,
GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
でヤンが述べているように
のコメントです。
を使用すると、暗算する前に値を並べ替えることもできます。
ORDER BY
:
SELECT person_id,
GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;
でダグが述べているように のコメントです。 は、結果に1024バイトの制限があります。これを解決するには、このクエリをクエリの前に実行してください。
SET group_concat_max_len = 2048;
もちろん
2048
を使用します。値を計算し割り当てること。
SET group_concat_max_len = CAST(
(SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ')
FROM peoples_hobbies
GROUP BY person_id) AS UNSIGNED);
関連
-
MysqlからElasticsearchにデータを同期させる方法を説明します。
-
MySQL 接続タイムアウト。エラー SQLSTATE[HY000] [2002] 接続がタイムアウトしました 解決済み
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINの違いは何ですか?[重複しています]。
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
最新
-
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のデータバックアップにmysqldumpを使用する方法
-
mysqlにおけるvarcharの日付比較とソートの実装
-
MySQLとOracleの一括挿入SQLの汎用的な記述例
-
MySQLによる既存テーブルのパーティショニングの実装
-
Mysql がエラーを報告 オペランドには 1 つのカラムが含まれている必要があります。
-
MySQLでテーブルを削除します。親行が削除または更新できません: 外部キー制約に失敗しました。
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] SQLを使用してSUMとSUBTRACTを行うには?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?