MySQL的列轉(zhuǎn)行函數(shù),指的是將一行中多個(gè)列的值,轉(zhuǎn)換為一列中的多個(gè)值。這可以通過(guò)聚合函數(shù)和條件表達(dá)式來(lái)實(shí)現(xiàn)。
以下是一個(gè)將多列轉(zhuǎn)換為行的示例:
SELECT id, MAX(CASE WHEN attribute_name = 'color' THEN attribute_value END) AS color, MAX(CASE WHEN attribute_name = 'size' THEN attribute_value END) AS size, MAX(CASE WHEN attribute_name = 'material' THEN attribute_value END) AS material FROM products_attributes GROUP BY id;
上面的代碼中,我們使用了 MAX 函數(shù)和 CASE 語(yǔ)句,將 products_attributes 表中的多個(gè)屬性值,根據(jù) id 聚合為一行。
注意,如果要在 GROUP BY 語(yǔ)句中的每個(gè)非聚合列都在 SELECT 中出現(xiàn),那么就沒(méi)有必要在 SELECT 中使用 DISTINCT 修飾符。因?yàn)檫@樣做只會(huì)增加額外的計(jì)算開(kāi)銷(xiāo)。
在實(shí)際應(yīng)用中,列轉(zhuǎn)行函數(shù)經(jīng)常被用于按需加載數(shù)據(jù),這可以顯著地提高查詢性能。