MySQL中列轉行操作是數據處理的常見需求之一,它可以將原本縱向排列的數據變為橫向排列,方便查看和分析。以下是最簡單的兩種MySQL列轉行方法。
方法一:使用GROUP_CONCAT函數
該方法使用MySQL內置函數GROUP_CONCAT將相同列的數據進行拼接,從而使得原本的列變成一行。其基本語法如下:
SELECT id, GROUP_CONCAT(salary SEPARATOR ',') AS salaries FROM employees GROUP BY id;
以上語句可以將如下表格:
id | salary | |----|--------| | 1 | 1000 | | 1 | 1500 | | 2 | 2000 | | 2 | 2500
轉化為如下形式:
id | salaries | |----|--------------| | 1 | 1000, 1500 | | 2 | 2000, 2500
方法二:使用CASE WHEN語句
該方法使用MySQL內置語句CASE WHEN將每一列的值轉化為一行,從而達到列轉行的效果。其基本語法如下:
SELECT id, MAX(CASE WHEN salary_num = 1 THEN salary END) AS salary_1, MAX(CASE WHEN salary_num = 2 THEN salary END) AS salary_2, MAX(CASE WHEN salary_num = 3 THEN salary END) AS salary_3 FROM ( SELECT id, salary, ROW_NUMBER() OVER (PARTITION BY id ORDER BY id) AS salary_num FROM employees ) AS temp GROUP BY id;
以上語句可以將如下表格:
id | salary | |----|--------| | 1 | 1000 | | 1 | 1500 | | 1 | 2000 | | 2 | 2500 | | 2 | 3000
轉化為如下形式:
id | salary_1 | salary_2 | salary_3 | |----|----------|----------|----------| | 1 | 1000 | 1500 | 2000 | | 2 | 2500 | 3000 | NULL
以上就是MySQL列轉行最簡單的兩種方法,具體選擇哪種方法應根據實際數據情況而定。
上一篇html帶鏈接的文字代碼
下一篇mysql列運算符有哪些