首页 > 代码库 > mysql动态行转列
mysql动态行转列
DROP TABLE IF EXISTS `score`; CREATE TABLE `score` ( `id` int(11) NOT NULL AUTO_INCREMENT, `class` varchar(255) DEFAULT NULL, `score` double DEFAULT NULL, `userid` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; INSERT INTO `score` VALUES (‘1‘, ‘math‘, ‘90‘, ‘1‘); INSERT INTO `score` VALUES (‘2‘, ‘english‘, ‘90‘, ‘1‘); INSERT INTO `score` VALUES (‘3‘, ‘computer‘, ‘80‘, ‘1‘); INSERT INTO `score` VALUES (‘4‘, ‘sports‘, ‘90‘, ‘1‘); INSERT INTO `score` VALUES (‘5‘, ‘math‘, ‘80‘, ‘2‘); INSERT INTO `score` VALUES (‘6‘, ‘english‘, ‘85‘, ‘2‘); INSERT INTO `score` VALUES (‘7‘, ‘computer‘, ‘100‘, ‘2‘);
查询语句
SET @EE=‘‘; set @str_tmp=‘‘; SELECT @EE:=CONCAT(@EE,‘SUM(IF(class=\‘‘,class,‘\‘‘,‘,score,0)) AS ‘,class,‘,‘) as aa into @str_tmp FROM (SELECT DISTINCT class FROM score) A order by length(aa) desc limit 1; SET @QQ=CONCAT(‘SELECT ifnull(score.userid,\‘total\‘),‘,LEFT(@str_tmp,char_length(@str_tmp)-1),‘ ,SUM(score) AS TOTAL FROM score GROUP BY userid WITH ROLLUP‘); PREPARE stmt FROM @QQ; EXECUTE stmt ; deallocate prepare stmt;
mysql动态行转列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。