行转列


 (1) 建表:


CREATE TABLE `student` (

  `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=10 DEFAULT CHARSET=utf8;


 




 (2) 新增数据:


insert into student(`user_name`,`course`,`score`)  values

("张三", "数学", 34),

("张三", "语文", 58),

("张三", "英语", 61),

("李四", "数学", 45),

("李四", "语文", 87),

("李四", "英语", 64),

("王五", "数学", 76),

("王五", "语文", 51),

("王五", "英语", 89);




 (3) 行转列 :


SELECT user_name ,

    MAX(CASE course WHEN '数学' THEN score ELSE 0 END ) 数学,

    MAX(CASE course WHEN '语文' THEN score ELSE 0 END ) 语文,

    MAX(CASE course WHEN '英语' THEN score ELSE 0 END ) 英语

FROM student

GROUP BY user_name;



评论

精彩, 谢谢各位。好好学习,天天向上 。加油 !

2024-07-02 15:36:48

获取数据表的字段列表信息 
 
SHOW COLUMNS FROM `表名`

2023-12-30 23:19:12

安装命令 
mysqld -install 
 
 
启动命令 
net start mysql 
 
登录命令 
mysql -h 127.0.0.1 -P 3306 -u root -p111 
 
 
 
 
cd /D E:\Program Files\java\mysql-5.7.19 
 
 
mysql_upgrade -u root -p --force  无效. 
navicat连接本地MySQL时出现Table ‘performance_schema.session_variables’ doesn’t exist报错。网上的解决方法是在mysql的bin目录下运行 mysql_upgrade -u root -p --force命令,但是我在输入这个命令之后出现了Error occurred: Cannot select database.报错。 
 
 
 
在mysql文件夹下的my.ini中添加 
 
[mysqld] 
show_compatibility_56 = ON 
performance_schema 

2023-12-30 23:16:49

行号 
================================================================================= 
set @rn=0; 
SELECT (@rn := @rn+1) as `rn`,video_task.* FROM `video_task` ORDER BY version ; 
UPDATE video_task SET version = RAND() * 100; 
 
 
小数第四位非0 - 查询1 
================================================================================= 
SELECT * FROM doubles WHERE ( 
`value`  LIKE '%.___0%'  
) LIMIT  0,50  
 
 
小数第四位非0 - 查询2 
================================================================================= 
SELECT *,(`value` * 10000) as a, FLOOR(`value` * 10000) as b, FLOOR(`value` * 10000)/10 as c, CEIL(FLOOR(`value` * 10000)/10) as d  FROM doubles  
 
WHERE CEIL(FLOOR(`value` * 10000)/10) > FLOOR(`value` * 10000)/10 and value > 0 
LIMIT  0,50 ;

2023-12-30 22:43:54

 
 
我是第几个1 
================================================================================= 
set @rn=0; 
SELECT rn from ( 
    SELECT (@rn := @rn+1) as `rn`,video_task.id FROM `video_task` ORDER BY video_task.version 
) t WHERE t.id=10; 
 
 
 
 
我是第几个2 
================================================================================= 
SELECT rn from ( 
    SELECT (@rn := @rn+1) as `rn`,video_task.id FROM (SELECT @rn := 0) as rn,`video_task` ORDER BY video_task.version 
) t WHERE t.id=8; 
 
 
 
 
分组排序取前n条数据 
================================================================================= 
select '' into @curClassId;  
select -1 into @rank;  
select * from 
(select *,         
   @rank := IF(@curClassId = type, @rank + 1, 1) AS newRank, 
     @curClassId := type  
from c_type order by type desc ) aaa 
where newRank <= 2 
order by type,newRank 

2023-12-30 22:43:22

 
MySQL复制表数据 
 
  TRUNCATE TABLE `mybook2` 
 
  insert into `mybook2`(`bookName`,`bookTime`) select `bookName`,`bookTime` from `mybook1`; 
 
   UPDATE `mybook2` set `bookName` = '',`bookTime` = '' 
 
 UPDATE `mybook2` set `bookName` = (select `bookName` from `mybook1` WHERE `id`=`mybook2`.`id` LIMIT 0,1) 

2023-12-30 22:20:55

  • 1

编程爱好者 © 2021 - 2024