欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MYSQL行列轉(zhuǎn)置方式

 更新時間:2025年01月16日 16:30:14   作者:<%相遇既是緣分%>  
本文介紹了如何使用MySQL和Navicat進行列轉(zhuǎn)行操作,首先,創(chuàng)建了一個名為`grade`的表,并插入多條數(shù)據(jù),然后,通過修改查詢SQL語句,使用`CASE`和`IF`函數(shù)將列轉(zhuǎn)換為行,總結(jié)指出,`SUM`可以替換為`MAX`、`MIN`、`AVG`等聚合函數(shù),并且在查詢中需要對普通字段進行分組

MYSQL行列轉(zhuǎn)置

環(huán)境準備:mysql,navicat 

本文講解列轉(zhuǎn)行

數(shù)據(jù)庫是這樣顯示的

想要轉(zhuǎn)換成下面這樣顯示

開始列轉(zhuǎn)行之前的準備

準備1:創(chuàng)建表學(xué)生分數(shù)表grade

CREATE TABLE grade
(
	stuName VARCHAR(20) NOT NULL COMMENT '學(xué)生姓名',
	stuCourse VARCHAR(20) NOT NULL COMMENT '學(xué)生課程名',
	stuScore INT NOT NULL COMMENT '學(xué)生課程分數(shù)'
)

grade表創(chuàng)建好了,也可以直接navicat數(shù)據(jù)庫右鍵鼠標(biāo)建表

鼠標(biāo)右鍵單擊grade設(shè)計表查看表結(jié)構(gòu)設(shè)置,結(jié)果與sql語句設(shè)置一致繼續(xù)往下走

準備2:往分數(shù)表grade插入多條數(shù)據(jù)

INSERT INTO grade(stuName,stuCourse,stuScore)
VALUES
('張三','語文',110),
('張三','數(shù)學(xué)',130),
('張三','英語',60),
('張三','體育',40),
('李四','語文',108),
('李四','數(shù)學(xué)',145),
('李四','英語',28),
('李四','體育',48),
('王五','語文',120),
('王五','數(shù)學(xué)',99),
('王五','英語',140),
('王五','體育',42)

鼠標(biāo)雙擊grade查看數(shù)據(jù)是否已插入,OK

下面開始步入正題

步驟一:查詢表內(nèi)所有數(shù)據(jù)(注釋:'*'代表所有)

SELECT * FROM grade

查詢結(jié)果顯然不符合我們的預(yù)期

步驟二修改查詢的sql語句 

  • 方式一:CASE
CASE case_value
	WHEN when_value THEN
		statement_list
	ELSE
		statement_list
END CASE;

具體代碼

SELECT stuName,
SUM(CASE WHEN stuCourse='語文' THEN stuScore ELSE 0 END) AS '語文',
SUM(CASE WHEN stuCourse='數(shù)學(xué)' THEN stuScore ELSE 0 END) AS '數(shù)學(xué)',
SUM(CASE WHEN stuCourse='英語' THEN stuScore ELSE 0 END) AS '英語',
SUM(CASE WHEN stuCourse='體育' THEN stuScore ELSE 0 END) AS '體育',
SUM(stuScore) AS '學(xué)科總分'
FROM grade
GROUP BY stuName

以下為代碼注釋:

//SELECT 后跟查詢結(jié)果
SELECT stuName, 
//SUM 聚合函數(shù)(官方寫好求和用的) 
// CASE WHEN stuCourse='語文' THEN stuScore ELSE 0 END 
用于替換值 若stuCourse='語文' 則對應(yīng)顯示stuScore,否則顯示0
//AS 重命名 列/(也叫字段)名
SUM(CASE WHEN stuCourse='語文' THEN stuScore ELSE 0 END) AS '語文',
SUM(CASE WHEN stuCourse='數(shù)學(xué)' THEN stuScore ELSE 0 END) AS '數(shù)學(xué)',
SUM(CASE WHEN stuCourse='英語' THEN stuScore ELSE 0 END) AS '英語',
SUM(CASE WHEN stuCourse='體育' THEN stuScore ELSE 0 END) AS '體育',
//SUM(stuScore)求各個學(xué)科總分數(shù)
SUM(stuScore) AS '學(xué)科總分'
//from 后跟要查詢的表名
FROM grade
//GROUP BY 對stuName進行分組,沒有這句,會報錯,要不然,就是顯示第一行
GROUP BY stuName

查詢結(jié)果,符合預(yù)期,列轉(zhuǎn)行成功

  • 方式二:if
IF(expr1,expr2,expr3)

具體代碼

SELECT stuName,
SUM(IF(stuCourse='語文',stuScore,0)) AS '語文',
SUM(IF(stuCourse='數(shù)學(xué)',stuScore,0)) AS '數(shù)學(xué)',
SUM(IF(stuCourse='英語',stuScore,0)) AS '英語',
SUM(IF(stuCourse='體育',stuScore,0)) AS '體育',
SUM(stuScore) AS '學(xué)科總分'
FROM grade
GROUP BY stuName

效果和方式一是一樣的

小節(jié):

1.這里面的SUM可以換成MAX,MIN,AVG等等,因為各個字段如stuCourse對應(yīng)一個stuScore所以用哪個都一樣

2.當(dāng)普通字段如stuName與聚合函數(shù)SUM(stuScore)一起查詢時 stuName,SUM(字段)

必須要分組,GROUP BY stuName

不然會報錯!??!

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于mongodb連接池配置方式

    關(guān)于mongodb連接池配置方式

    這篇文章主要介紹了關(guān)于mongodb連接池配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • mysql如何開啟各種日志

    mysql如何開啟各種日志

    這篇文章主要介紹了mysql如何開啟各種日志,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • MySQL創(chuàng)建用戶的三種方法

    MySQL創(chuàng)建用戶的三種方法

    在對MySQL的日常管理和操作中,為了避免有人惡意使用root用戶控制數(shù)據(jù)庫,盡可能地不用或少用 root 用戶登錄系統(tǒng),本文主要介紹了MySQL創(chuàng)建用戶的三種方法,感興趣的可以了解一下
    2023-08-08
  • MySQL 5.7安裝中的常見問題分析及解決方案

    MySQL 5.7安裝中的常見問題分析及解決方案

    在Linux服務(wù)器上安裝MySQL數(shù)據(jù)庫時,尤其是在CentOS 7等操作系統(tǒng)上,可能會遇到一些安裝包和依賴關(guān)系相關(guān)的錯誤,這些問題的產(chǎn)生原因可以是多個方面,本文將通過對具體錯誤的分析和解決方案的闡述,幫助大家快速解決在安裝MySQL 5.7版本過程中可能遇到的問題
    2024-11-11
  • mysql如何修改index索引名稱

    mysql如何修改index索引名稱

    這篇文章主要介紹了mysql如何修改index索引名稱問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Ubuntu下MySQL中文亂碼的問題解決

    Ubuntu下MySQL中文亂碼的問題解決

    對于MySQL中文亂碼問題(我的是Ubuntu系統(tǒng)),在網(wǎng)上看了很多解決方案,期間也走了不少彎路,所以想著根據(jù)自己的解決之路寫一篇文章分享給有需要的朋友們,所以這篇文章主要介紹了如何解決Ubuntu下MySQL中文亂碼問題的相關(guān)資料,需要的朋友可以參考借鑒。
    2017-02-02
  • MySQL控制流函數(shù)(-if?,elseif,else,case...when)

    MySQL控制流函數(shù)(-if?,elseif,else,case...when)

    這篇文章主要介紹了MySQL控制流函數(shù)(-if?,elseif,else,case...when),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • mysql特殊語法insert?into?..?on?duplicate?key?update?..使用方法詳析

    mysql特殊語法insert?into?..?on?duplicate?key?update?..使用方

    在我們的日常開發(fā)中經(jīng)常會遇到過這樣的情景,查看某條記錄是否存在,不存在的話創(chuàng)建一條新記錄,存在的話更新某些字段,下面這篇文章主要給大家介紹了關(guān)于mysql特殊語法insert?into?..?on?duplicate?key?update?..使用方法的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • mysql如何讓左模糊查詢也能走索引

    mysql如何讓左模糊查詢也能走索引

    這篇文章主要介紹了mysql如何讓左模糊查詢也能走索引,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • MySQL創(chuàng)建高性能索引的全步驟

    MySQL創(chuàng)建高性能索引的全步驟

    這篇文章主要給大家介紹了關(guān)于MySQL創(chuàng)建高性能索引的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評論