在使用MySQL語句進行數據查詢時,有時候我們需要把多行數據轉換成一行顯示。這時我們就需要用到行轉列的關鍵字。接下來我會為大家介紹將行數據轉換成列數據的方法。
首先我們需要在MySQL中創建一張示例表來演示。我們可以用下面的CREATE TABLE語句來創建這張表:
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `age` int(11) NOT NULL, `gender` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
接下來,我們可以向表格中插入一些樣本數據:
INSERT INTO `test` (`name`, `age`, `gender`) VALUES ('Tom', 18, 'Male'), ('Jerry', 17, 'Male'), ('Alice', 19, 'Female'), ('Bob', 20, 'Male'), ('Cathy', 21, 'Female');
現在我們已經創建了示例表,并且向其中插入了數據。接下來,我們就可以將行數據轉換成列數據了。下面的代碼可以幫助我們實現該功能:
SELECT MAX(CASE WHEN `name` ='Tom' THEN `age` ELSE NULL END) AS `Tom`, MAX(CASE WHEN `name` ='Jerry' THEN `age` ELSE NULL END) AS `Jerry`, MAX(CASE WHEN `name` ='Alice' THEN `age` ELSE NULL END) AS `Alice`, MAX(CASE WHEN `name` ='Bob' THEN `age` ELSE NULL END) AS `Bob`, MAX(CASE WHEN `name` ='Cathy' THEN `age` ELSE NULL END) AS `Cathy` FROM `test`;
上面代碼中,我們使用了MAX函數與CASE語句進行數據的處理。我們首先使用CASE語句來確定行中的值,再使用MAX函數把這些值進行比較,從而得到轉換后的列數據。執行上面的代碼,我們會得到以下結果:
Tom Jerry Alice Bob Cathy 18 17 19 20 21
這就是我們將行數據轉換成列數據的方法。以上就是整個過程,希望對大家有所幫助。