如何將多個MySQL行連接成一個欄位?
P粉482108310
2023-08-28 11:10:23
<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>但我只想要 1 行、1 列:</p>
<p><strong>預期輸出:</strong></p>
<pre class="brush:php;toolbar:false;">shopping, fishing, coding</pre>
<p>原因是我從多個表中選擇多個值,並且在所有連接之後,我得到的行數比我想要的多得多。 </p>
<p>我在 MySQL Doc 上找了一個函數,它看起來不像 <code>CONCAT</code> 或 <code>CONCAT_WS</code> 函數接受結果集。 </p>
<p>這裡有人知道如何做到這一點嗎? </p>
看看
GROUP_CONCAT
如果您的 MySQL 版本 (4.1) 支援它。有關更多信息,請參閱文檔詳細資訊。它看起來像:
您可以使用
GROUP_CONCAT
:正如路德維希在他的評論中所述, a> 您可以新增
DISTINCT
運算子以避免重複:如 Jan 在他們的評論中所述, a> 您也可以在使用
ORDER BY
內爆之前對值進行排序:正如達格在他的評論中所述, 結果有 1024 位元組的限制。若要解決此問題,請在查詢之前執行此查詢:
當然,您可以根據需要更改
2048
。計算並指派值: