最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL實(shí)現(xiàn)列轉(zhuǎn)行與行轉(zhuǎn)列的操作代碼

 更新時(shí)間:2024年09月25日 09:14:27   作者:codeMonkey_gxy  
在處理數(shù)據(jù)時(shí),我們常常會(huì)遇到需要將表中的列(字段)轉(zhuǎn)換為行,或?qū)⑿修D(zhuǎn)換為列的情況,這種操作通常被稱為“列轉(zhuǎn)行”(Pivoting)和“行轉(zhuǎn)列”(Unpivoting),本文將向您介紹如何使用 CASE 語句、聚合函數(shù)以及 GROUP BY 子句來完成列轉(zhuǎn)行和行轉(zhuǎn)列的操作

引言

在處理數(shù)據(jù)時(shí),我們常常會(huì)遇到需要將表中的列(字段)轉(zhuǎn)換為行,或?qū)⑿修D(zhuǎn)換為列的情況。這種操作通常被稱為“列轉(zhuǎn)行”(Pivoting)和“行轉(zhuǎn)列”(Unpivoting)。在 MySQL 中,雖然沒有直接提供 PIVOT 和 UNPIVOT 這樣的關(guān)鍵字,但我們可以使用其他方法來實(shí)現(xiàn)這些功能。本文將向您介紹如何使用 CASE 語句、聚合函數(shù)以及 GROUP BY 子句來完成列轉(zhuǎn)行和行轉(zhuǎn)列的操作。

列轉(zhuǎn)行(Pivoting)

列轉(zhuǎn)行是指將表格中的一列或多列的值轉(zhuǎn)換成新的列標(biāo)題,并且將對應(yīng)的數(shù)據(jù)填充到這些新列中。下面通過一個(gè)例子來說明這個(gè)過程。

示例數(shù)據(jù)

假設(shè)有一個(gè)成績表 scores,包含學(xué)生的姓名 name、科目 subject 和分?jǐn)?shù) score

CREATE TABLE scores (
    name VARCHAR(50),
    subject VARCHAR(20),
    score INT
);

INSERT INTO scores (name, subject, score) VALUES
('Alice', 'Math', 95),
('Alice', 'English', 88),
('Bob', 'Math', 76),
('Bob', 'English', 92);

轉(zhuǎn)換前查詢結(jié)果

SELECT * FROM scores;
+-------+---------+-------+
| name  | subject | score |
+-------+---------+-------+
| Alice | Math    |    95 |
| Alice | English |    88 |
| Bob   | Math    |    76 |
| Bob   | English |    92 |
+-------+---------+-------+

列轉(zhuǎn)行 SQL 語句

我們需要將 subject 列的不同值變?yōu)樾碌牧忻?,并把對?yīng)的 score 填充進(jìn)去。

SELECT
    name,
    MAX(CASE WHEN subject = 'Math' THEN score ELSE NULL END) AS Math,
    MAX(CASE WHEN subject = 'English' THEN score ELSE NULL END) AS English
FROM
    scores
GROUP BY
    name;

轉(zhuǎn)換后查詢結(jié)果

+-------+------+---------+
| name  | Math | English |
+-------+------+---------+
| Alice |   95 |      88 |
| Bob   |   76 |      92 |
+-------+------+---------+

行轉(zhuǎn)列(Unpivoting)

行轉(zhuǎn)列是列轉(zhuǎn)行的逆過程,即將多個(gè)列的數(shù)據(jù)轉(zhuǎn)換成一行多條記錄的形式。這可以通過 UNION ALL 來實(shí)現(xiàn)。

示例數(shù)據(jù)

假設(shè)現(xiàn)在有另一個(gè)表 students,它已經(jīng)以列轉(zhuǎn)行后的形式存儲(chǔ)了學(xué)生的信息:

CREATE TABLE students (
    name VARCHAR(50),
    Math INT,
    English INT
);

INSERT INTO students (name, Math, English) VALUES
('Alice', 95, 88),
('Bob', 76, 92);

轉(zhuǎn)換前查詢結(jié)果

SELECT * FROM students;
+-------+------+---------+
| name  | Math | English |
+-------+------+---------+
| Alice |   95 |      88 |
| Bob   |   76 |      92 |
+-------+------+---------+

行轉(zhuǎn)列 SQL 語句

我們將每個(gè)科目的成績都變成單獨(dú)的一行記錄。

SELECT
    name,
    'Math' AS subject,
    Math AS score
FROM
    students
UNION ALL
SELECT
    name,
    'English' AS subject,
    English AS score
FROM
    students;

轉(zhuǎn)換后查詢結(jié)果

+-------+---------+-------+
| name  | subject | score |
+-------+---------+-------+
| Alice | Math    |    95 |
| Bob   | Math    |    76 |
| Alice | English |    88 |
| Bob   | English |    92 |
+-------+---------+-------+

通過以上示例,我們可以看到如何在 MySQL 中靈活地進(jìn)行列轉(zhuǎn)行和行轉(zhuǎn)列的數(shù)據(jù)轉(zhuǎn)換。希望這些技巧能夠幫助您更好地管理和分析數(shù)據(jù)庫中的數(shù)據(jù)。

到此這篇關(guān)于MySQL實(shí)現(xiàn)列轉(zhuǎn)行與行轉(zhuǎn)列的操作代碼的文章就介紹到這了,更多相關(guān)MySQL列轉(zhuǎn)行與行轉(zhuǎn)列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql占用CPU超過100%的詳細(xì)解決過程

    mysql占用CPU超過100%的詳細(xì)解決過程

    前段時(shí)間我的一個(gè)網(wǎng)站經(jīng)常打不開,通過檢查發(fā)現(xiàn)服務(wù)器cpu占用超過100%,通過top命令發(fā)現(xiàn)是mysql占用cpu特別高導(dǎo)致的,下面這篇文章主要給大家介紹了關(guān)于mysql占用CPU超過100%的詳細(xì)解決過程,需要的朋友可以參考下
    2023-10-10
  • MySQL Limit性能優(yōu)化及分頁數(shù)據(jù)性能優(yōu)化詳解

    MySQL Limit性能優(yōu)化及分頁數(shù)據(jù)性能優(yōu)化詳解

    今天小編就為大家分享一篇關(guān)于MySQL Limit性能優(yōu)化及分頁數(shù)據(jù)性能優(yōu)化詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Mysql 忘記root密碼的完美解決方法

    Mysql 忘記root密碼的完美解決方法

    通常在使用Mysql數(shù)據(jù)庫時(shí),如果長時(shí)間沒有登陸,或者由于工作交接完成度不高,會(huì)導(dǎo)致數(shù)據(jù)庫root登陸密碼忘記,本文給大家介紹一種當(dāng)忘記mysql root密碼時(shí)的解決辦法,一起看看吧
    2016-12-12
  • mysql服務(wù)1067錯(cuò)誤多種解決方案分享

    mysql服務(wù)1067錯(cuò)誤多種解決方案分享

    今天我的mysql服務(wù)器突然出來了1067錯(cuò)誤提示,無法正常啟動(dòng)了,我今天從網(wǎng)上找尋了大量的解決mysql服務(wù)1067錯(cuò)誤的辦法,有需要的朋友可以看看
    2012-03-03
  • mysql數(shù)據(jù)庫修改數(shù)據(jù)表引擎的方法

    mysql數(shù)據(jù)庫修改數(shù)據(jù)表引擎的方法

    對于MySQL數(shù)據(jù)庫,如果你要使用事務(wù)以及行級(jí)鎖就必須使用INNODB引擎。如果你要使用全文索引,那必須使用myisam,那如何修改修改MySQL的引擎為INNODB呢,下面介紹一個(gè)修改方法
    2014-01-01
  • MySQL高并發(fā)生成唯一訂單號(hào)的方法實(shí)現(xiàn)

    MySQL高并發(fā)生成唯一訂單號(hào)的方法實(shí)現(xiàn)

    這篇文章主要介紹了MySQL高并發(fā)生成唯一訂單號(hào)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 淺析MySQL內(nèi)存的使用說明(全局緩存+線程緩存)

    淺析MySQL內(nèi)存的使用說明(全局緩存+線程緩存)

    本篇文章是對MySQL內(nèi)存的使用說明(全局緩存+線程緩存)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 用VirtualBox構(gòu)建MySQL測試環(huán)境的筆記

    用VirtualBox構(gòu)建MySQL測試環(huán)境的筆記

    這篇文章主要介紹了如何用VirtualBox構(gòu)建MySQL測試環(huán)境,特分享下,方便需要的朋友
    2013-08-08
  • MySql InnoDB引擎下的鎖使用及說明

    MySql InnoDB引擎下的鎖使用及說明

    文章介紹了MySQL InnoDB存儲(chǔ)引擎中的鎖機(jī)制,包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖、Next-Key鎖、插入意向鎖、自增鎖以及空間索引的謂詞鎖,這些鎖機(jī)制確保了數(shù)據(jù)的一致性和并發(fā)控制
    2025-12-12
  • MySQL的主從備份方式(一主一從)

    MySQL的主從備份方式(一主一從)

    這篇文章主要介紹了MySQL的主從備份方式(一主一從),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評(píng)論

健康| 苗栗市| 越西县| 东源县| 四子王旗| 左贡县| 天台县| 桂林市| 平昌县| 三河市| 景宁| 城市| 拉萨市| 通榆县| 晋中市| 毕节市| 年辖:市辖区| 井研县| 宜良县| 施秉县| 铜陵市| 朝阳县| 长治县| 静乐县| 吉安市| 长宁县| 周至县| 武隆县| 青河县| 连江县| 永宁县| 仙桃市| 丹巴县| 格尔木市| 新巴尔虎右旗| 游戏| 天气| 封开县| 沿河| 长泰县| 中江县|