MySQL是一個(gè)功能強(qiáng)大的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),使用廣泛,幾乎所有的web應(yīng)用程序都使用MySQL作為后臺(tái)數(shù)據(jù)庫管理系統(tǒng)。
在MySQL中,有時(shí)候需要將數(shù)據(jù)中的數(shù)列變?yōu)闄M列的形式,以便于數(shù)據(jù)的分析和展示,這個(gè)過程就是將列轉(zhuǎn)換為行的過程。
在MySQL中實(shí)現(xiàn)列轉(zhuǎn)行的方法有很多,下面我們就來介紹一下其中三種方法:
--第一種方法:使用CASE語句 SELECT id, MAX(CASE WHEN student = 'A' THEN score END) AS score1, MAX(CASE WHEN student = 'B' THEN score END) AS score2, MAX(CASE WHEN student = 'C' THEN score END) AS score3 FROM table_name GROUP BY id; --第二種方法:使用UNION ALL SELECT id, 'A' AS student, score FROM table_name WHERE student = 'A' UNION ALL SELECT id, 'B' AS student, score FROM table_name WHERE student = 'B' UNION ALL SELECT id, 'C' AS student, score FROM table_name WHERE student = 'C' ORDER BY id, student; --第三種方法:使用GROUP_CONCAT函數(shù) SELECT id, GROUP_CONCAT(score ORDER BY student DESC SEPARATOR ',') AS score FROM table_name GROUP BY id;
以上三種方法都可以將數(shù)據(jù)中的數(shù)列轉(zhuǎn)換為橫列的形式,具體使用哪種方法需要結(jié)合實(shí)際情況進(jìn)行選擇。