久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

mysql的行怎么轉為列

mysql行轉列的方法:1、利用“SUM(CASE 表名 WHEN 字段名 THEN score ELSE 0 END) as 字段名”操作轉換;2、利用“SUM(IF(表名=字段名,score,0)) as 字段名”操作轉換。

mysql的行怎么轉為列

本教程操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。

mysql的行怎么轉為列

行轉列

即將原本同一列下多行的不同內容作為多個字段,輸出對應內容。

建表語句

DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score(     id INT(11) NOT NULL auto_increment,     userid VARCHAR(20) NOT NULL COMMENT '用戶id',     subject VARCHAR(20) COMMENT '科目',     score DOUBLE COMMENT '成績',     PRIMARY KEY(id) )ENGINE = INNODB DEFAULT CHARSET = utf8;

插入數據

INSERT INTO tb_score(userid,subject,score) VALUES ('001','語文',90); INSERT INTO tb_score(userid,subject,score) VALUES ('001','數學',92); INSERT INTO tb_score(userid,subject,score) VALUES ('001','英語',80); INSERT INTO tb_score(userid,subject,score) VALUES ('002','語文',88); INSERT INTO tb_score(userid,subject,score) VALUES ('002','數學',90); INSERT INTO tb_score(userid,subject,score) VALUES ('002','英語',75.5); INSERT INTO tb_score(userid,subject,score) VALUES ('003','語文',70); INSERT INTO tb_score(userid,subject,score) VALUES ('003','數學',85); INSERT INTO tb_score(userid,subject,score) VALUES ('003','英語',90); INSERT INTO tb_score(userid,subject,score) VALUES ('003','政治',82);

查詢數據表中的內容(即轉換前的結果)

SELECT * FROM tb_score

先來看一下轉換后的結果:

mysql的行怎么轉為列

可以看出,這里行轉列是將原來的subject字段的多行內容選出來,作為結果集中的不同列,并根據userid進行分組顯示對應的score。

1、使用case…when….then 進行行轉列

SELECT userid, SUM(CASE `subject` WHEN '語文' THEN score ELSE 0 END) as '語文', SUM(CASE `subject` WHEN '數學' THEN score ELSE 0 END) as '數學', SUM(CASE `subject` WHEN '英語' THEN score ELSE 0 END) as '英語', SUM(CASE `subject` WHEN '政治' THEN score ELSE 0 END) as '政治'  FROM tb_score  GROUP BY userid

2、使用IF() 進行行轉列:

SELECT userid, SUM(IF(`subject`='語文',score,0)) as '語文', SUM(IF(`subject`='數學',score,0)) as '數學', SUM(IF(`subject`='英語',score,0)) as '英語', SUM(IF(`subject`='政治',score,0)) as '政治'  FROM tb_score  GROUP BY userid

注意點:

(1)SUM() 是為了能夠使用GROUP BY根據userid進行分組,因為每一個userid對應的subject="語文"的記錄只有一條,所以SUM() 的值就等于對應那一條記錄的score的值。

假如userid ='001' and subject='語文' 的記錄有兩條,則此時SUM() 的值將會是這兩條記錄的和,同理,使用Max()的值將會是這兩條記錄里面值最大的一個。但是正常情況下,一個user對應一個subject只有一個分數,因此可以使用SUM()、MAX()、MIN()、AVG()等聚合函數都可以達到行轉列的效果。

(2)IF(`subject`='語文',score,0) 作為條件,即對所有subject='語文'的記錄的score字段進行SUM()、MAX()、MIN()、AVG()操作,如果score沒有值則默認為0。

3、利用SUM(IF()) 生成列 + WITH ROLLUP 生成匯總行,并利用 IFNULL將匯總行標題顯示為Total

SELECT IFNULL(userid,'total') AS userid, SUM(IF(`subject`='語文',score,0)) AS 語文, SUM(IF(`subject`='數學',score,0)) AS 數學, SUM(IF(`subject`='英語',score,0)) AS 英語, SUM(IF(`subject`='政治',score,0)) AS 政治, SUM(IF(`subject`='total',score,0)) AS total FROM(     SELECT userid,IFNULL(`subject`,'total') AS `subject`,SUM(score) AS score     FROM tb_score     GROUP BY userid,`subject`     WITH ROLLUP     HAVING userid IS NOT NULL )AS A  GROUP BY userid WITH ROLLUP;

運行結果:

mysql的行怎么轉為列

4、利用SUM(IF()) 生成列 + UNION 生成匯總行,并利用 IFNULL將匯總行標題顯示為 Total

SELECT userid, SUM(IF(`subject`='語文',score,0)) AS 語文, SUM(IF(`subject`='數學',score,0)) AS 數學, SUM(IF(`subject`='英語',score,0)) AS 英語, SUM(IF(`subject`='政治',score,0)) AS 政治, SUM(score) AS TOTAL  FROM tb_score GROUP BY userid UNION SELECT 'TOTAL',SUM(IF(`subject`='語文',score,0)) AS 語文, SUM(IF(`subject`='數學',score,0)) AS 數學, SUM(IF(`subject`='英語',score,0)) AS 英語, SUM(IF(`subject`='政治',score,0)) AS 政治, SUM(score) FROM tb_score

運行結果:

mysql的行怎么轉為列

5、利用SUM(IF()) 生成列,直接生成結果不再利用子查詢

SELECT IFNULL(userid,'TOTAL') AS userid, SUM(IF(`subject`='語文',score,0)) AS 語文, SUM(IF(`subject`='數學',score,0)) AS 數學, SUM(IF(`subject`='英語',score,0)) AS 英語, SUM(IF(`subject`='政治',score,0)) AS 政治, SUM(score) AS TOTAL  FROM tb_score GROUP BY userid WITH ROLLUP;

運行結果:

mysql的行怎么轉為列

6、動態,適用于列不確定情況

SET @EE=''; select @EE :=CONCAT(@EE,'sum(if(subject= '',subject,'',score,0)) as ',subject, ',') AS aa FROM (SELECT DISTINCT subject FROM tb_score) A ; SET @QQ = CONCAT('select ifnull(userid,'TOTAL')as userid,',@EE,' sum(score) as TOTAL from tb_score group by userid WITH ROLLUP'); -- SELECT @QQ; PREPARE stmt FROM @QQ; EXECUTE stmt; DEALLOCATE PREPARE stmt;

運行結果:

mysql的行怎么轉為列

7、合并字段顯示:利用group_concat()

SELECT userid,GROUP_CONCAT(`subject`,":",score)AS 成績 FROM tb_score GROUP BY userid

運行結果:

mysql的行怎么轉為列

group_concat(),手冊上說明:該函數返回帶有來自一個組的連接的非NULL值的字符串結果。

比較抽象,難以理解。通俗點理解,其實是這樣的:group_concat()會計算哪些行屬于同一組,將屬于同一組的列顯示出來。要返回哪些列,由函數參數(就是字段名)決定。分組必須有個標準,就是根據group by指定的列進行分組。

結論:group_concat()函數可以很好的建屬于同一分組的多個行轉化為一個列。

推薦學習:mysql視頻教程

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
水野朝阳av一区二区三区| av中文资源在线资源免费观看| 青青青免费在线视频| 丁香婷婷久久| 色婷婷综合网| 午夜欧美巨大性欧美巨大| 岛国av免费在线观看| 日韩一区二区三区免费播放| 黄毛片在线观看| 亚洲风情在线资源| 久久免费影院| 极品av在线| 成人在线网站| 亚洲福利免费| 国产女优一区| 亚洲欧美日本国产专区一区| 中文无码日韩欧| 亚洲制服一区| 国产探花一区在线观看| 精品国产91| 91精品在线观看国产| 久久高清国产| 国产情侣一区| 超碰在线99| 自拍日韩欧美| 日韩久久99| 精品国产麻豆| 黄色成人在线网址| 青草久久视频| 色在线中文字幕| 免费视频亚洲| 日产欧产美韩系列久久99| 久久只有精品| 久久影视一区| 日韩精品久久理论片| 国产高清日韩| а√天堂8资源中文在线| 99精品小视频| 亚洲精品影视| 精品91福利视频| 欧美日韩第一| 奇米777国产一区国产二区| 成人在线观看免费视频| 欧美成人久久| 国产欧美自拍一区| 鲁鲁在线中文| 综合激情视频| 国产夫妻在线| 亚洲精品中文字幕99999| 国产成人久久精品麻豆二区| 不卡在线一区| 国产精品久久久久久久久久妞妞| 亚洲电影有码| 欧美久久香蕉| 久久精品国产大片免费观看| 日本久久一区| 日韩不卡免费高清视频| 日韩精品视频一区二区三区| 免费福利视频一区二区三区| 日本v片在线高清不卡在线观看| 久久只有精品| 人人精品人人爱| 国产美女高潮在线| 日韩视频1区| 久久激情网站| 国产精品白丝一区二区三区| 午夜久久福利| 欧美激情网址| 亚洲午夜国产成人| 日韩欧美1区| 久久精品xxxxx| 亚洲一区黄色| 色婷婷狠狠五月综合天色拍| 久久激五月天综合精品| 三级在线看中文字幕完整版| 国产亚洲精品v| 欧美国产美女| 国产私拍福利精品视频二区| 国产精品色网| 午夜av不卡| 国产精品videosex极品| 免费看日韩精品| 久久九九国产| 精品久久久久久久| 欧美一区在线观看视频| 性一交一乱一区二区洋洋av| 日韩国产一区二区| 国产精品视频一区二区三区四蜜臂| 国产亚洲精品v| 欧美日韩免费观看视频| 欧美一级久久| 一区二区三区网站| 精品1区2区3区4区| 精品日韩视频| 97视频热人人精品免费| 国产精品黄色| 日韩黄色免费网站| 欧美在线综合| 蜜臀久久99精品久久一区二区| 福利一区二区| 国产精品久久久久久av公交车| 免费在线视频一区| 国产精品99一区二区| 免费一区二区三区在线视频| 免费的成人av| 丝袜美腿一区| a国产在线视频| 欧美成人精品一级| 日韩国产一区二| 在线精品观看| 免费成人在线影院| 亚洲欧美日韩视频二区| japanese国产精品| 香蕉久久99| 美女网站一区| 黄色不卡一区| 亚洲婷婷免费| 午夜久久免费观看| 欧美va天堂在线| 免费欧美一区| 久久国产毛片| 在线日韩视频| 婷婷激情综合| 99国产精品| 亚洲男女自偷自拍| 久久国产高清| 亚洲精品少妇| 人人爱人人干婷婷丁香亚洲| 欧美片第1页综合| 国产精品一区二区三区四区在线观看| 日韩成人精品一区二区三区| 日本在线一区二区三区| 99国产精品| 黄色成人在线网址| 亚洲欧美日韩国产一区| 中文日韩在线| 三级欧美在线一区| 日韩国产欧美一区二区三区| 日韩精品欧美精品| 欧美日韩视频免费看| 国产精品久久乐| 国产91在线精品| 久久久久国产精品一区二区| 亚洲午夜91| 亚洲欧美日本日韩| 亚洲三级国产| 久久国产人妖系列| 精品国产黄a∨片高清在线| 91av亚洲| 亚洲免费黄色| 视频在线观看国产精品| 亚洲久久一区| 亚洲精品a级片| 日本激情一区| 亚洲最新无码中文字幕久久| 亚洲综合电影| 福利在线一区| 欧美日韩视频网站| 99视频精品全部免费在线视频| 四虎影视精品| 日韩精品电影| 午夜国产欧美理论在线播放| 夜夜嗨一区二区| 首页亚洲欧美制服丝腿| 亚洲美女久久| 一二三区精品| 石原莉奈在线亚洲二区| 亚洲精品伊人| 91成人福利| 老色鬼精品视频在线观看播放| 国产精久久一区二区| 国产精品久久久免费| 国产探花一区在线观看| 日韩中文字幕| 日韩高清不卡一区| 久久国产乱子精品免费女| 日本高清久久| 国产精品日本一区二区不卡视频 | 亚洲激情黄色| 另类国产ts人妖高潮视频| 日欧美一区二区| 免费看久久久| 999国产精品永久免费视频app| 黑丝一区二区三区| 亚洲3区在线| 国产精品qvod| 久久亚洲国产| 奶水喷射视频一区| 久久久久久亚洲精品美女| 在线视频精品| 国产成人77亚洲精品www| 视频在线观看一区| 久久青青视频| 视频一区中文字幕| 97精品97| 91精品美女| 午夜亚洲一区| 韩国三级一区| 欧美午夜三级| 亚洲女人av|