在日常的開發(fā)工作中,我們經(jīng)常會(huì)遇到需要將數(shù)據(jù)庫表格的字段變?yōu)榭v向排列的需求。MySQL數(shù)據(jù)庫中,我們可以使用pivot關(guān)鍵字來實(shí)現(xiàn)這個(gè)功能。下面我們來看一下pivot關(guān)鍵字的用法。
SELECT #需要展示的列 col1, col2, #... #數(shù)據(jù)字段 max(CASE WHEN field='field1' THEN value END) AS field1, max(CASE WHEN field='field2' THEN value END) AS field2, #... FROM # 數(shù)據(jù)表 t_name WHERE # 條件篩選 GROUP BY # 需要分組的列 col1, col2, #...
接下來我們解釋一下上面代碼中的關(guān)鍵字:
SELECT
用來篩選需要展示的列。max
函數(shù)是為了使排列變得整齊,因?yàn)閙ax會(huì)忽略空值。WHEN
和THEN
是用來篩選指定字段的。FROM
是表格名。WHERE
是數(shù)據(jù)篩選條件。GROUP BY
是需要分組的列。
使用pivot關(guān)鍵字可以把數(shù)據(jù)庫字段縱向排列,極大地方便了開發(fā)人員的數(shù)據(jù)處理工作。但是在實(shí)際應(yīng)用過程中,我們需要考慮到數(shù)據(jù)的可讀性、可擴(kuò)展性等因素,并且需要進(jìn)行一些數(shù)據(jù)格式化和重構(gòu)的工作,才能最大化地利用pivot的優(yōu)勢。