MySQL中多列轉(zhuǎn)多行的方法
介紹
在MySQL中,有時(shí)候會(huì)遇到需要將多列數(shù)據(jù)轉(zhuǎn)換成多行數(shù)據(jù)的情況。例如,我們有一張Student表,包括學(xué)生的姓名、科目和成績(jī)?nèi)袛?shù)據(jù)。如果想要將科目和成績(jī)進(jìn)行橫向并排展示,就需要將它們分別轉(zhuǎn)換為對(duì)應(yīng)的行。那么,如何通過MySQL來實(shí)現(xiàn)這個(gè)功能呢?
使用UNION+CASE WHEN
首先,我們可以使用UNION和CASE WHEN來實(shí)現(xiàn)多列轉(zhuǎn)多行。
具體步驟:
1.使用SELECT語句從表中選擇需要展示的列。
2.使用UNION將多條SELECT語句合并成一條語句。
3.使用CASE WHEN根據(jù)不同的條件將不同的列進(jìn)行展示。
下面是一個(gè)例子:
SELECT Name, 'Chinese' AS Subject, Chinese AS Score
FROM Student
UNION
SELECT Name, 'Math' AS Subject, Math AS Score
FROM Student
UNION
SELECT Name, 'English' AS Subject, English AS Score
FROM Student
使用UNPIVOT
另外,我們還可以使用UNPIVOT來實(shí)現(xiàn)多列轉(zhuǎn)多行。
具體步驟:
1.使用SELECT語句從表中選擇需要展示的列。
2.使用UNPIVOT將多列轉(zhuǎn)換成對(duì)應(yīng)的行。
下面是一個(gè)例子:
SELECT Name, Subject, Score
FROM (
SELECT Name, Chinese, Math, English
FROM Student) p
UNPIVOT (Score FOR Subject IN (Chinese, Math, English)) AS unpvt
總結(jié)
以上就是MySQL中多列轉(zhuǎn)多行的兩種方法。無論是使用UNION+CASE WHEN還是使用UNPIVOT,只要選擇合適的方法便可以輕松實(shí)現(xiàn)該功能。希望本文可以幫助大家更好地應(yīng)對(duì)多列轉(zhuǎn)多行的問題。