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

學習mysql?如何行轉(zhuǎn)列與列傳行

 更新時間:2022年02月18日 14:26:23   作者:孫中明  
這篇文章主要介紹了mysql行轉(zhuǎn)列與列傳行的使用方法,幫助大家更好的理解和學習MySQL的使用,語句不難,但有一定的知識參考價值,需要的朋友可以參考一下,希望給你的學習帶來幫助

一、行轉(zhuǎn)列— case+group by

mysql> CREATE TABLE `TEST_TB_GRADE` (
? ? -> ?`ID` int(10) NOT NULL AUTO_INCREMENT,
? ? -> ?`USER_NAME` varchar(20) DEFAULT NULL,
? ? -> ?`COURSE` varchar(20) DEFAULT NULL,
? ? -> ?`SCORE` float DEFAULT '0',
? ? -> ?PRIMARY KEY (`ID`)
? ? -> ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

插入數(shù)據(jù):

mysql> insert into TEST_TB_GRADE(USER_NAME, COURSE, SCORE) values
? ? -> ("張三", "數(shù)學", 34),
? ? -> ("張三", "語文", 58),
? ? -> ("張三", "英語", 58),
? ? -> ("李四", "數(shù)學", 45),
? ? -> ("李四", "語文", 87),
? ? -> ("李四", "英語", 45),
? ? -> ("王五", "數(shù)學", 76),
? ? -> ("王五", "語文", 34),
? ? -> ("王五", "英語", 89);

查詢表:

mysql> select * from test_tb_grade;
+----+-----------+--------+-------+
| ID | USER_NAME | COURSE | SCORE |
+----+-----------+--------+-------+
| ?1 | 張三 ? ? ?| 數(shù)學 ? | ? ?34 |
| ?2 | 張三 ? ? ?| 語文 ? | ? ?58 |
| ?3 | 張三 ? ? ?| 英語 ? | ? ?58 |
| ?4 | 李四 ? ? ?| 數(shù)學 ? | ? ?45 |
| ?5 | 李四 ? ? ?| 語文 ? | ? ?87 |
| ?6 | 李四 ? ? ?| 英語 ? | ? ?45 |
| ?7 | 王五 ? ? ?| 數(shù)學 ? | ? ?76 |
| ?8 | 王五 ? ? ?| 語文 ? | ? ?34 |
| ?9 | 王五 ? ? ?| 英語 ? | ? ?89 |
+----+-----------+--------+-------+

不用聚集函數(shù)和group by語句:

mysql> SELECT user_name ,
? ? -> ? (CASE course WHEN '數(shù)學' THEN score ELSE 0 END ) 數(shù)學,
? ? -> ? (CASE course WHEN '語文' THEN score ELSE 0 END ) 語文,
? ? -> ? (CASE course WHEN '英語' THEN score ELSE 0 END ) 英語
? ? -> FROM test_tb_grade;
+-----------+--------+--------+--------+
| user_name | 數(shù)學 ? | 語文 ? | 英語 ? |
+-----------+--------+--------+--------+
| 張三 ? ? ?| ? ? 34 | ? ? ?0 | ? ? ?0 |
| 張三 ? ? ?| ? ? ?0 | ? ? 58 | ? ? ?0 |
| 張三 ? ? ?| ? ? ?0 | ? ? ?0 | ? ? 58 |
| 李四 ? ? ?| ? ? 45 | ? ? ?0 | ? ? ?0 |
| 李四 ? ? ?| ? ? ?0 | ? ? 87 | ? ? ?0 |
| 李四 ? ? ?| ? ? ?0 | ? ? ?0 | ? ? 45 |
| 王五 ? ? ?| ? ? 76 | ? ? ?0 | ? ? ?0 |
| 王五 ? ? ?| ? ? ?0 | ? ? 34 | ? ? ?0 |
| 王五 ? ? ?| ? ? ?0 | ? ? ?0 | ? ? 89 |
+-----------+--------+--------+--------+

用group by語句:

mysql> SELECT user_name ,
? ? -> ? (CASE course WHEN '數(shù)學' THEN score ELSE 0 END ) 數(shù)學,
? ? -> ? (CASE course WHEN '語文' THEN score ELSE 0 END ) 語文,
? ? -> ? (CASE course WHEN '英語' THEN score ELSE 0 END ) 英語
? ? -> FROM test_tb_grade
? ? -> group by user_name;
+-----------+--------+--------+--------+
| user_name | 數(shù)學 ? | 語文 ? | 英語 ? |
+-----------+--------+--------+--------+
| 張三 ? ? ?| ? ? 34 | ? ? ?0 | ? ? ?0 |
| 李四 ? ? ?| ? ? 45 | ? ? ?0 | ? ? ?0 |
| 王五 ? ? ?| ? ? 76 | ? ? ?0 | ? ? ?0 |
+-----------+--------+--------+--------+

用group by語句和聚集函數(shù)實現(xiàn)行轉(zhuǎn)列:

mysql> SELECT user_name ,
? ? -> ? MAX(CASE course WHEN '數(shù)學' THEN score ELSE 0 END ) 數(shù)學,
? ? -> ? MAX(CASE course WHEN '語文' THEN score ELSE 0 END ) 語文,
? ? -> ? MAX(CASE course WHEN '英語' THEN score ELSE 0 END ) 英語
? ? -> FROM test_tb_grade
? ? -> group by user_name;
+-----------+--------+--------+--------+
| user_name | 數(shù)學 ? | 語文 ? | 英語 ? |
+-----------+--------+--------+--------+
| 張三 ? ? ?| ? ? 34 | ? ? 58 | ? ? 58 |
| 李四 ? ? ?| ? ? 45 | ? ? 87 | ? ? 45 |
| 王五 ? ? ?| ? ? 76 | ? ? 34 | ? ? 89 |
+-----------+--------+--------+--------+

二、列轉(zhuǎn)行——union

CREATE TABLE `TEST_TB_GRADE2` (
?`ID` int(10) NOT NULL AUTO_INCREMENT,
?`USER_NAME` varchar(20) DEFAULT NULL,
?`CN_SCORE` float DEFAULT NULL,
?`MATH_SCORE` float DEFAULT NULL,
?`EN_SCORE` float DEFAULT '0',
?PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

插入數(shù)據(jù):

insert into TEST_TB_GRADE2(USER_NAME, CN_SCORE, MATH_SCORE, EN_SCORE) values
("張三", 34, 58, 58),
("李四", 45, 87, 45),
("王五", 76, 34, 89);

查詢:

mysql> select * from test_tb_grade2;
+----+-----------+----------+------------+----------+
| ID | USER_NAME | CN_SCORE | MATH_SCORE | EN_SCORE |
+----+-----------+----------+------------+----------+
| ?1 | 張三 ? ? ?| ? ? ? 34 | ? ? ? ? 58 | ? ? ? 58 |
| ?2 | 李四 ? ? ?| ? ? ? 45 | ? ? ? ? 87 | ? ? ? 45 |
| ?3 | 王五 ? ? ?| ? ? ? 76 | ? ? ? ? 34 | ? ? ? 89 |
+----+-----------+----------+------------+----------+

不求并集:

mysql> select user_name, '語文' COURSE , CN_SCORE as SCORE from test_tb_grade2;
+-----------+--------+-------+
| user_name | COURSE | SCORE |
+-----------+--------+-------+
| 張三 ? ? ?| 語文 ? | ? ?34 |
| 李四 ? ? ?| 語文 ? | ? ?45 |
| 王五 ? ? ?| 語文 ? | ? ?76 |
+-----------+--------+-------+

求并集:

mysql> select user_name, '語文' COURSE , CN_SCORE as SCORE from test_tb_grade2
? ? -> union select user_name, '數(shù)學' COURSE, MATH_SCORE as SCORE from test_tb_grade2
? ? -> union select user_name, '英語' COURSE, EN_SCORE as SCORE from test_tb_grade2;
+-----------+--------+-------+
| user_name | COURSE | SCORE |
+-----------+--------+-------+
| 張三 ? ? ?| 語文 ? | ? ?34 |
| 李四 ? ? ?| 語文 ? | ? ?45 |
| 王五 ? ? ?| 語文 ? | ? ?76 |
| 張三 ? ? ?| 數(shù)學 ? | ? ?58 |
| 李四 ? ? ?| 數(shù)學 ? | ? ?87 |
| 王五 ? ? ?| 數(shù)學 ? | ? ?34 |
| 張三 ? ? ?| 英語 ? | ? ?58 |
| 李四 ? ? ?| 英語 ? | ? ?45 |
| 王五 ? ? ?| 英語 ? | ? ?89 |
+-----------+--------+-------+

order by語句:

mysql> select user_name, '語文' COURSE , CN_SCORE as SCORE from test_tb_grade2
? ? -> union select user_name, '數(shù)學' COURSE, MATH_SCORE as SCORE from test_tb_grade2
? ? -> union select user_name, '英語' COURSE, EN_SCORE as SCORE from test_tb_grade2
? ? -> order by user_name,COURSE;
+-----------+--------+-------+
| user_name | COURSE | SCORE |
+-----------+--------+-------+
| 張三 ? ? ?| 數(shù)學 ? | ? ?58 |
| 張三 ? ? ?| 英語 ? | ? ?58 |
| 張三 ? ? ?| 語文 ? | ? ?34 |
| 李四 ? ? ?| 數(shù)學 ? | ? ?87 |
| 李四 ? ? ?| 英語 ? | ? ?45 |
| 李四 ? ? ?| 語文 ? | ? ?45 |
| 王五 ? ? ?| 數(shù)學 ? | ? ?34 |
| 王五 ? ? ?| 英語 ? | ? ?89 |
| 王五 ? ? ?| 語文 ? | ? ?76 |
+-----------+--------+-------+

到此這篇關于mysql 行轉(zhuǎn)列與列傳行的文章就介紹到這了,更多相關mysql 行轉(zhuǎn)列與列傳行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL數(shù)據(jù)庫索引原理及優(yōu)化策略

    MySQL數(shù)據(jù)庫索引原理及優(yōu)化策略

    MySQL數(shù)據(jù)庫索引是一種數(shù)據(jù)結(jié)構,用于提高數(shù)據(jù)查詢的效率,加快數(shù)據(jù)檢索的速度。索引基于樹結(jié)構實現(xiàn),可以通過B+樹等算法來優(yōu)化索引效率。MySQL中常見的索引類型包括主鍵索引、唯一索引、普通索引、全文索引等
    2023-04-04
  • MySQL多表聯(lián)查的實現(xiàn)思路

    MySQL多表聯(lián)查的實現(xiàn)思路

    數(shù)據(jù)庫應用在我們的生活中是很常見的,在編輯一些應用以及軟件的時候都需要用到數(shù)據(jù)庫來存儲數(shù)據(jù),下面這篇文章主要給大家介紹了關于MongoDB中實現(xiàn)多表聯(lián)查的相關資料,需要的朋友可以參考下
    2023-02-02
  • mysql unix準換時間格式查找指定日期數(shù)據(jù)代碼

    mysql unix準換時間格式查找指定日期數(shù)據(jù)代碼

    這篇文章主要介紹了mysql unix準換時間格式查找指定日期數(shù)據(jù),需要的朋友可以參考下
    2014-03-03
  • SQL中寫入包含有英文單引號“ '''' ”失敗問題深入詳解

    SQL中寫入包含有英文單引號“ '''' ”失敗問題深入詳解

    這篇文章主要介紹了SQL中寫入包含有英文單引號“ ' ”失敗問題深入詳解,列舉了具體實例講解,有感興趣的同學可以研究下
    2021-03-03
  • MySQL最大連接數(shù)限制的修改步驟

    MySQL最大連接數(shù)限制的修改步驟

    針對一些訪問量比較大的網(wǎng)站,Mysql默認的最大連接數(shù)可能不夠用,需要進行相應的修改,下面這篇文章主要給大家介紹了關于MySQL最大連接數(shù)限制的修改步驟,需要的朋友可以參考下
    2022-07-07
  • MySQL之修改數(shù)據(jù)表存儲引擎的三種方式

    MySQL之修改數(shù)據(jù)表存儲引擎的三種方式

    這篇文章主要介紹了MySQL之修改數(shù)據(jù)表存儲引擎的三種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • mysql 的load data infile

    mysql 的load data infile

    前些日子在開發(fā)一個輿情監(jiān)測系統(tǒng),需要在一個操作過程中往數(shù)據(jù)表里插入大量的數(shù)據(jù),為了改變以往生硬地逐條數(shù)據(jù)插入的笨辦法,也為了提高執(zhí)行效率,決定用load data infile來執(zhí)行數(shù)據(jù)插入。
    2009-05-05
  • Mysql錯誤1366 - Incorrect integer value解決方法

    Mysql錯誤1366 - Incorrect integer value解決方法

    這篇文章主要介紹了Mysql錯誤1366 - Incorrect integer value解決方法,本文通過修改字段默認值解決,需要的朋友可以參考下
    2014-09-09
  • Win10下mysql 8.0.15 安裝配置方法圖文教程

    Win10下mysql 8.0.15 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了Win10下mysql 8.0.15 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • MySQL緩存的查詢和清除命令使用詳解

    MySQL緩存的查詢和清除命令使用詳解

    這篇文章主要介紹了MySQL緩存的查詢和清除命令使用詳解,對于一些不常改變數(shù)據(jù)且有大量相同sql查詢的表,查詢緩存會顯得比較有用一些,需要的朋友可以參考下
    2015-12-12

最新評論