mysql sql同一個欄位多個行轉成一個欄位查詢

oktokeep發表於2024-09-07

mysql sql同一個欄位多個行轉成一個欄位查詢

如果您想要將MySQL中同一個表的不同行的值合併到一個欄位中,您可以使用GROUP_CONCAT()函式。這個函式可以將多個行的值連線起來,並且可以透過SEPARATOR關鍵字指定分隔符。
以下是一個簡單的例子,假設我們有一個名為users的表,它有一個name欄位,我們想要將所有使用者的名字合併到一個欄位中,用逗號分隔:

SELECT GROUP_CONCAT(name SEPARATOR ', ') AS names
FROM users;

這將返回一個單一的行,其中包含所有使用者名稱以逗號和空格分隔的字串。
請注意,GROUP_CONCAT()有一個預設的長度限制,通常是1024個字元。如果您的合併結果可能會超過這個長度,您可以在查詢前透過設定group_concat_max_len會話變數來增加這個限制。

SET SESSION group_concat_max_len = 1000000;
SELECT GROUP_CONCAT(name SEPARATOR ', ') AS names
FROM users;

這將設定最大長度為100萬個字元。如果您希望這個更改在伺服器重啟後依然有效,您需要在伺服器配置檔案中設定它。

#demo:查詢gps表的多個裝置序列號,組成一行,中間以逗號分隔
SELECT GROUP_CONCAT(serial_number SEPARATOR ', ') FROM `tbl_gps` WHERE car_no = '';

相關文章