MySQL是一種流行的關系型數據庫管理系統,但在某些情況下,需要將一張表的多列數據變成一行。這時,我們可以使用MySQL的函數和操作符來實現。
以下是一些常用的方法。
-- 使用GROUP_CONCAT函數 SELECT id, GROUP_CONCAT(name) AS names FROM mytable GROUP BY id; -- 使用CONCAT_WS函數 SELECT id, CONCAT_WS(',', name1, name2, name3) AS names FROM mytable; -- 使用CASE語句 SELECT id, MAX(CASE WHEN name_order = 1 THEN name END) AS name1, MAX(CASE WHEN name_order = 2 THEN name END) AS name2, MAX(CASE WHEN name_order = 3 THEN name END) AS name3 FROM ( SELECT id, name, ROW_NUMBER() OVER (PARTITION BY id ORDER BY name) AS name_order FROM mytable ) AS derived_table GROUP BY id;
這些方法都可以將表的多列數據變成一行,但各有優缺點。GROUP_CONCAT和CONCAT_WS可以處理任何數量的列,但GROUP_CONCAT的默認長度限制為1024個字符;而CASE語句需要手動指定每一列的名稱,但可以處理更大的數據集。
無論使用哪種方法,我們都需要根據具體情況選擇最合適的方式。感謝您的閱讀!