MySQL是一種流行的關系型數據庫管理系統,廣泛應用于各種項目和網站中。在使用MySQL過程中,有時需要將表中的豎排數據轉換為橫排數據,這在數據分析和數據可視化方面非常有用。本文將介紹如何使用MySQL將豎的數據轉換為橫的數據。
-- 原始表結構 CREATE TABLE `table1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `category` varchar(255) NOT NULL, `value` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; -- 插入原始數據 INSERT INTO `table1` (`category`, `value`) VALUES ('A', 100), ('B', 200), ('C', 300), ('D', 400); -- 豎排數據 SELECT * FROM `table1`; +----+----------+-------+ | id | category | value | +----+----------+-------+ | 1 | A | 100 | | 2 | B | 200 | | 3 | C | 300 | | 4 | D | 400 | +----+----------+-------+
上面是一個簡單的表結構和數據示例,現在需要將豎排數據轉換為橫排數據,將category作為列名,value作為對應的值。這可以使用MySQL的PIVOT功能來實現。
-- PIVOT查詢 SELECT IF(`category`='A', `value`, NULL) AS `A`, IF(`category`='B', `value`, NULL) AS `B`, IF(`category`='C', `value`, NULL) AS `C`, IF(`category`='D', `value`, NULL) AS `D` FROM `table1`; -- 轉換后的橫排數據 +------+------+------+------+ | A | B | C | D | +------+------+------+------+ | 100 | NULL | NULL | NULL | | NULL | 200 | NULL | NULL | | NULL | NULL | 300 | NULL | | NULL | NULL | NULL | 400 | +------+------+------+------+
如上述代碼所示,使用MySQL的PIVOT功能進行查詢。IF()
函數用于將指定條件的value提取到指定的列中,其他value為NULL。結果即為轉換后的橫排數據。
通過PIVOT功能,MySQL可以方便地將豎排數據轉換為橫排數據,提高數據分析和可視化的效率。