複数の MySQL 行を 1 つのフィールドに連結することはできますか?
P粉556159786
2023-08-22 14:02:48
<p><code>MySQL</code> を使用すると、次のことができます。</p>
<pre class="brush:php;toolbar:false;">SELECT 趣味 FROM peoples_hobbies WHERE person_id = 5;</pre>
<p><strong>私の出力: </strong></p>
<pre class="brush:php;toolbar:false;">ショッピング
釣り
コーディング</pre>
<p>ただし、必要なのは 1 行 1 列だけです。</p>
<p>望ましい出力: </strong></p>
<pre class="brush:php;toolbar:false;">ショッピング、釣り、コーディング</pre>
<p>その理由は、複数のテーブルから複数の値を選択しており、すべての結合の後、必要以上の行を取得しているためです。 </p>
<p>MySQL ドキュメントで関数を調べたところ、<code>CONCAT</code> または <code>CONCAT_WS</code> 関数は結果セットを受け入れないようです。 </p>
<p>それで、これを行う方法を知っている人はいますか? </p>
MySQL バージョン (4.1) がサポートしている場合は、
GROUP_CONCAT
を確認できます。詳細については、ドキュメントを参照してください。クエリ ステートメントは次のとおりです:
リーリーGROUP_CONCAT
Ludwig関数を使用できます: リーリー
が のコメントで述べたように、重複を避けるために DISTINCT
が演算子を追加できます。 リーリー
Janのコメントで述べたように、ORDER BY :
がを使用して、結合する前に値を並べ替えることもできます。 リーリー
Dagのコメントで述べたように、結果には 1024 バイトの制限があります。この問題を解決するには、クエリの前に次のクエリを実行します: リーリー もちろん、必要に応じて
2048の値を変更できます。値を計算して割り当てる方法は次のとおりです:
リーリー