MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),其在數(shù)據(jù)查詢和管理方面非常強(qiáng)大。本篇文章將詳細(xì)介紹MySQL中橫豎查詢的實(shí)現(xiàn)方法。
橫向查詢是將一行中的多個(gè)字段轉(zhuǎn)換成多行的查詢結(jié)果,通常使用UNION ALL和CASE WHEN語(yǔ)句實(shí)現(xiàn)。例如,我們有如下一張表:
CREATE TABLE `score` ( `student` varchar(10) NOT NULL, `chinese` int(3) NOT NULL, `math` int(3) NOT NULL, `english` int(3) NOT NULL );
我們可以使用如下的SQL語(yǔ)句實(shí)現(xiàn)橫向查詢:
SELECT `student`, 'chinese' AS `subject`, `chinese` AS `score` FROM `score` UNION ALL SELECT `student`, 'math' AS `subject`, `math` AS `score` FROM `score` UNION ALL SELECT `student`, 'english' AS `subject`, `english` AS `score` FROM `score`;
豎向查詢是將多行中的某些字段轉(zhuǎn)換成多列的查詢結(jié)果,通常使用GROUP BY和SUM、CASE WHEN等聚合函數(shù)實(shí)現(xiàn)。例如,我們有如下的一張表:
CREATE TABLE `sales` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `date` DATE NOT NULL, `product` VARCHAR(50) NOT NULL, `amount` INT(11) NOT NULL, PRIMARY KEY (`id`) );
我們可以使用如下的SQL語(yǔ)句實(shí)現(xiàn)豎向查詢:
SELECT `product`, SUM(CASE WHEN YEAR(`date`) = '2021' THEN `amount` ELSE 0 END) AS `2021`, SUM(CASE WHEN YEAR(`date`) = '2020' THEN `amount` ELSE 0 END) AS `2020`, SUM(CASE WHEN YEAR(`date`) = '2019' THEN `amount` ELSE 0 END) AS `2019` FROM `sales` GROUP BY `product`;
綜上所述,MySQL中的橫豎查詢可以通過(guò)使用UNION ALL、CASE WHEN、聚合函數(shù)等語(yǔ)句實(shí)現(xiàn)。這些查詢方法可以幫助我們更好地抽取和分析數(shù)據(jù),提高數(shù)據(jù)轉(zhuǎn)換和處理的效率。