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

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

mysql的行怎么轉為列

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

mysql的行怎么轉為列

本教程操作環(huán)境:windows10系統(tǒng)、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;

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

INSERT INTO tb_score(userid,subject,score) VALUES ('001','語文',90); INSERT INTO tb_score(userid,subject,score) VALUES ('001','數(shù)學',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','數(shù)學',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','數(shù)學',85); INSERT INTO tb_score(userid,subject,score) VALUES ('003','英語',90); INSERT INTO tb_score(userid,subject,score) VALUES ('003','政治',82);

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

SELECT * FROM tb_score

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

mysql的行怎么轉為列

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

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

SELECT userid, SUM(CASE `subject` WHEN '語文' THEN score ELSE 0 END) as '語文', SUM(CASE `subject` WHEN '數(shù)學' THEN score ELSE 0 END) as '數(shù)學', 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`='數(shù)學',score,0)) as '數(shù)學', SUM(IF(`subject`='英語',score,0)) as '英語', SUM(IF(`subject`='政治',score,0)) as '政治'  FROM tb_score  GROUP BY userid

注意點:

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

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

(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`='數(shù)學',score,0)) AS 數(shù)學, 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`='數(shù)學',score,0)) AS 數(shù)學, 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`='數(shù)學',score,0)) AS 數(shù)學, 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`='數(shù)學',score,0)) AS 數(shù)學, 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、動態(tài),適用于列不確定情況

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(),手冊上說明:該函數(shù)返回帶有來自一個組的連接的非NULL值的字符串結果。

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

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

推薦學習:mysql視頻教程

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
中文字幕一区二区三区四区久久| 综合视频一区| 国产精品久久久久久久久久妞妞| 97久久中文字幕| 国产精品亚洲欧美一级在线| 国产精品久一| 成人在线视频中文字幕| 欧美国产不卡| 欧美国产美女| 1024精品一区二区三区| 亚洲欧美成人综合| 日本va欧美va瓶| 国产精品亚洲成在人线| 国产va免费精品观看精品视频| 日韩av免费| 香蕉久久国产| 国产亚洲欧美日韩精品一区二区三区 | 国产精品天堂蜜av在线播放| 国产精品2023| 国产夫妻在线| 激情欧美亚洲| 日本99精品| 另类专区亚洲| 午夜在线精品偷拍| 国产日韩欧美三级| 日韩成人亚洲| 亚洲2区在线| 福利片在线一区二区| 一区在线观看| 欧美激情福利| japanese国产精品| 日韩**一区毛片| 97国产精品| 蜜桃视频一区二区三区| 国产精品网址| 极品日韩av| 国产欧美日韩一级| 国产一区日韩一区| 欧美一级二级视频| 久久影视一区| 欧美日韩午夜电影网| 久久91导航| 日韩亚洲精品在线观看| 成人福利视频| 日本欧美一区二区| 丝袜美腿一区| 日本午夜精品一区二区三区电影| 午夜精品成人av| 日韩avvvv在线播放| 日韩国产欧美一区二区| 蜜桃免费网站一区二区三区| 久久一区精品| 视频在线观看国产精品| 国产一区二区三区探花| 亚洲我射av| 欧美sm一区| 青青草视频一区| 国产91精品对白在线播放| 国产亚洲欧美日韩精品一区二区三区| 欧美日韩高清| 红杏一区二区三区| 亚洲人成高清| 99精品一区| 精品国产精品国产偷麻豆| 国产精品日韩久久久| 国产精品久久观看| 91精品国产自产观看在线 | 亚洲国产成人二区| 日本不卡一二三区黄网| 成人羞羞视频播放网站| 国产精品一区免费在线| 视频在线观看91| 亚洲精品一区三区三区在线观看| 91成人在线| 亚洲综合不卡| 91精品蜜臀一区二区三区在线| 国产精品多人| 日本不卡高清视频| 狠狠操综合网| 精品精品国产三级a∨在线| 四虎在线精品| 中文亚洲免费| 国产精品99一区二区| 久久电影tv| 久久精品女人| 久久精品97| 日韩在线观看中文字幕| 99在线精品视频在线观看| 在线观看精品| 精品成av人一区二区三区| 欧美日一区二区三区在线观看国产免| 免费一级片91| 9国产精品视频| 久久天堂成人| 热三久草你在线| 韩国一区二区三区视频| 国产伦精品一区二区三区在线播放| 乱人伦精品视频在线观看| 欧美在线影院| 精品一区欧美| 激情久久五月| 亚洲午夜精品久久久久久app| 色黄视频在线观看| 黄色在线网站噜噜噜| 色综合五月天| 成人精品国产亚洲| 国产999精品在线观看| 欧美激情aⅴ一区二区三区 | 欧美一级二级视频| 91精品日本| 日本午夜精品久久久久| 日韩成人av影视| 日韩一区中文| 91免费精品国偷自产在线在线| 日韩中文字幕视频网| 一区二区三区网站| 亚洲精品在线a| 日韩手机在线| 欧美亚洲国产日韩| 国产日韩欧美在线播放不卡| 久久激情五月婷婷| 国产欧美自拍一区| 国产精品香蕉| 精品一区二区三区视频在线播放| 麻豆精品视频在线观看视频| 精品高清久久| 日韩中文首页| 婷婷亚洲综合| 蜜桃视频第一区免费观看| 天堂俺去俺来也www久久婷婷| 日韩精品a在线观看91| 国产精品一区二区av日韩在线| 麻豆国产欧美一区二区三区| 高潮久久久久久久久久久久久久| 午夜精品成人av| av不卡在线看| 亚洲无线观看| 国产一卡不卡| 中文av在线全新| 亚州av乱码久久精品蜜桃| 国产模特精品视频久久久久| 亚洲综合婷婷| 国产日韩视频在线| 水蜜桃久久夜色精品一区| 少妇精品导航| 丝袜美腿亚洲一区二区图片| 四虎成人精品一区二区免费网站| 国产精品亚洲成在人线| 免费看av不卡| 99国产成+人+综合+亚洲欧美| 少妇精品久久久| 国产精久久久| 欧美日韩视频免费观看| 日韩专区一卡二卡| 国产亚洲一区二区三区啪| 国产h片在线观看| 一区在线视频观看| 国产欧美日韩影院| 日韩国产欧美| 久久婷婷久久| 久久亚洲风情| 国产精品v一区二区三区| 97se综合| 自拍自偷一区二区三区| 久久97视频| 国产视频亚洲| 91精品国产一区二区在线观看| 久久亚洲精品中文字幕| 五月天综合网站| 国产精品亲子伦av一区二区三区| 日本а中文在线天堂| 午夜在线视频观看日韩17c| 日韩精品中文字幕吗一区二区 | 久久精品国产99久久| 亚洲精品无吗| 国产精品成人a在线观看| 亚洲一区二区动漫| 国产精品免费不| 日韩视频一区| 国产日韩欧美一区在线| 亚洲一级影院| 国产探花在线精品| 激情综合在线| 国产精品99久久免费观看| 亚洲黄色在线| 国产福利一区二区三区在线播放| 婷婷六月综合| 精品国产亚洲一区二区三区在线 | 欧美日韩免费观看一区=区三区 | 五月天久久777| 国产另类在线| 亚洲激情另类| 国产精品红桃| 美女国产精品| 亚洲人成在线网站| 国产九九精品| 亚洲天堂日韩在线| 国产99久久久国产精品成人免费| 国产欧美日韩在线一区二区 | 久久久久久免费视频|