能否將多個MySQL行連接成一個欄位?
P粉556159786
2023-08-22 14:02:48
<p>使用<code>MySQL</code>,我可以做以下操作:</p>
<pre class="brush:php;toolbar:false;">SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;</pre>
<p><strong>我的產出:</strong></p>
<pre class="brush:php;toolbar:false;">shopping
fishing
coding</pre>
<p>但我只要一行一列:</p>
<p><strong>期望的輸出:</strong></p>
<pre class="brush:php;toolbar:false;">shopping, fishing, coding</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
的值。計算並指派值的方法如下: