複数の MySQL 行を 1 つのフィールドに連結するにはどうすればよいですか?
P粉482108310
2023-08-28 11:10:23
<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>期待される出力: </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 が:
を使用できます。 リーリーのコメントで述べたように、 重複を避けるために a>DISTINCT
のコメントで述べたように、演算子を追加できます。 リーリー
Jan がORDER BY a>:
のコメントで述べたように、を使用して、内破する前に値を並べ替えることもできます。 リーリー
Dag が結果には 1024 バイトの制限があります。この問題を解決するには、クエリを実行する前に次のクエリを実行します: リーリー もちろん、##2048
は必要に応じて変更できます。値を計算して割り当てる:リーリー