MySQL 數據表橫縱轉換是指將一張表的行轉換為列或者將列轉換為行。這在數據分析、查詢及數據可視化時非常有用。
以下是一個MySQL表:
CREATE TABLE my_table ( id INT PRIMARY KEY, name VARCHAR(50), age INT, gender VARCHAR(10) ); INSERT INTO my_table VALUES (1, 'Alice', 25, 'F'); INSERT INTO my_table VALUES (2, 'Bob', 30, 'M'); INSERT INTO my_table VALUES (3, 'Charlie', 35, 'M'); INSERT INTO my_table VALUES (4, 'David', 40, 'M'); INSERT INTO my_table VALUES (5, 'Eva', 45, 'F');
首先,我們使用GROUP_CONCAT
函數將一列的值合并成一個字符串:
SELECT GROUP_CONCAT(name SEPARATOR ',') AS names FROM my_table;
這將返回一個新的表,由一個名為names
的列組成。這個列包含了所有的名字連接在一起的字符串。
接下來,我們使用PIVOT
函數將一個列作為行傳遞進去:
SELECT GROUP_CONCAT(IF(gender = 'F', age, NULL)) AS female_ages, GROUP_CONCAT(IF(gender = 'M', age, NULL)) AS male_ages FROM my_table;
這將返回一個表,其中列female_ages
包含了所有女性的年齡,列male_ages
包含了所有男性的年齡。我們使用IF
函數過濾出符合條件的行,并使用NULL
表示不符合條件的行。
最后,我們可以使用CROSS JOIN
將兩個表組合在一起:
SELECT names, female_ages, male_ages FROM (SELECT GROUP_CONCAT(name SEPARATOR ',') AS names FROM my_table) t1 CROSS JOIN (SELECT GROUP_CONCAT(IF(gender = 'F', age, NULL)) AS female_ages, GROUP_CONCAT(IF(gender = 'M', age, NULL)) AS male_ages FROM my_table) t2;
這將返回一個表,其中列names
包含了所有名字連接在一起的字符串,列female_ages
包含了所有女性的年齡,列male_ages
包含了所有男性的年齡。
總的來說,MySQL 數據表橫縱轉換可以幫助我們更好地分析和呈現數據,使得數據處理更加高效和準確。
下一篇css箭頭動圖效果