複数の MySQL 行を 1 つのフィールドに結合する
MySQL の結合では多くの行が返されることが多く、データ分析が面倒になります。 この記事では、複数の行を 1 つのフィールドに効率的に結合して処理を容易にする方法を説明します。
GROUP_CONCAT
関数はこのプロセスの鍵となります。 例:
<code class="language-sql">SELECT person_id, GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;</code>
このクエリは趣味を person_id
でグループ化し、区切り文字としてカンマで連結します。
重複を削除するには、DISTINCT
:
<code class="language-sql">SELECT person_id, GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;</code>
並べ替えた結果については、ORDER BY
:
<code class="language-sql">SELECT person_id, GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;</code>
GROUP_CONCAT
にはデフォルトの 1024 バイト制限があることに注意してください。 これを増やすには、次を使用します:
<code class="language-sql">SET group_concat_max_len = 2048;</code>
または、必要な長さを動的に計算します:
<code class="language-sql">SET group_concat_max_len = CAST( (SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ') FROM peoples_hobbies GROUP BY person_id) AS UNSIGNED);</code>
GROUP_CONCAT
は、複数の行を 1 つのより管理しやすいフィールドに統合することで、データ操作を簡素化します。
以上が複数のMySQL行を単一のフィールドに連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。