色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql 豎表換橫表實(shí)現(xiàn)方法詳解(附代碼示例)

傅智翔2年前13瀏覽0評論

在 MySQL 中,我們經(jīng)常會遇到需要將豎表轉(zhuǎn)換為橫表的需求。豎表指的是以行為單位存儲數(shù)據(jù)的表,而橫表則是以列為單位存儲數(shù)據(jù)的表。在某些場景下,橫表的存儲方式更加直觀和方便查詢。本文將詳細(xì)介紹 MySQL 豎表轉(zhuǎn)橫表的實(shí)現(xiàn)方法。

我們以以下豎表為例:

ame | attribute | value

----|------|-----------|-------

1 | A | height | 170

1 | A | weight | 60

2 | B | height | 165

2 | B | weight | 55

ame 表示姓名,attribute 表示屬性,value 表示屬性值。我們希望將其轉(zhuǎn)換為以下橫表:

ame | height | weight

----|------|--------|--------

1 | A | 170 | 60

2 | B | 165 | 55

以下是實(shí)現(xiàn)方法的 SQL 語句:

SELECT

id,ame,

MAX(CASE WHEN attribute = 'height' THEN value ELSE NULL END) AS height,

MAX(CASE WHEN attribute = 'weight' THEN value ELSE NULL END) AS weight

FROMame

GROUP BY

id,ame;

解釋如下:

ame 字段。

然后,我們使用 MAX 函數(shù)和 CASE WHEN 語句將 attribute 和 value 轉(zhuǎn)換為列。當(dāng) attribute 為 height 時(shí),我們將 value 賦值給 height 列;當(dāng) attribute 為 weight 時(shí),我們將 value 賦值給 weight 列。

ame 分組,確保每個(gè)人只有一行記錄。

以下是一個(gè)完整的代碼示例,供讀者參考:

-- 創(chuàng)建豎表ame` (t(11) NOT NULL,ame` varchar(255) NOT NULL,

`attribute` varchar(255) NOT NULL,

`value` varchar(255) NOT NULLnoDBb4;

-- 插入數(shù)據(jù)ameame`, `attribute`, `value`) VALUES

(1, 'A', 'height', '170'),

(1, 'A', 'weight', '60'),

(2, 'B', 'height', '165'),

(2, 'B', 'weight', '55');

-- 豎表轉(zhuǎn)橫表

SELECT

id,ame,

MAX(CASE WHEN attribute = 'height' THEN value ELSE NULL END) AS height,

MAX(CASE WHEN attribute = 'weight' THEN value ELSE NULL END) AS weight

FROMame

GROUP BY

id,ame;

本文介紹了 MySQL 豎表轉(zhuǎn)橫表的實(shí)現(xiàn)方法,并提供了一個(gè)完整的代碼示例。讀者可以根據(jù)自己的需求進(jìn)行修改和擴(kuò)展。如果有任何疑問或建議,請?jiān)谠u論區(qū)留言。