mysql 利用@rownum生成自定义排序值

来源:互联网 发布:c语言技术 编辑:程序博客网 时间:2024/05/16 04:21

mysql 利用@rownum生成自定义排序值

一、定义表结构

CREATE TABLE `t_student` (  `id` int(12) NOT NULL AUTO_INCREMENT COMMENT '主键ID',  `stunum` varchar(12) DEFAULT NULL COMMENT '学号',  `stuname` varchar(45) DEFAULT NULL COMMENT '姓名',  `stuage` int(3) DEFAULT NULL COMMENT '年龄',  `stusex` varchar(2) DEFAULT NULL COMMENT '性别',  `stubirthday` varchar(45) DEFAULT NULL COMMENT '生日',  `stuhobby` varchar(45) DEFAULT NULL COMMENT '爱好',  `age_rank` int(11) DEFAULT NULL COMMENT '年龄升序排序值',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;

二、创建测试存储过程

DROP PROCEDURE IF EXISTS insert_loop;delimiter //CREATE PROCEDURE insert_loop (count INT)BEGIN    DECLARE i INT DEFAULT 1 ;     START TRANSACTION ;    WHILE i <= count DO        INSERT INTO t_student (stunum, stuage)        VALUE            (                CONCAT('0901', LPAD(i, 5, '0')),                FLOOR(18 + RAND() * 5)            ) ;        SET i = i + 1 ;    END WHILE ;     COMMIT ;END//delimiter ;

三、执行存储过程,插入10w条测试数据

CALL insert_loop(100000);

四、mysql 利用@rownum生成自定义排序值

UPDATE t_student s set s.age_rank=(    SELECT rownum from (SELECT    @rownum :=@rownum + 1 AS rownum,  t.idFROM    t_student t,    (SELECT @rownum := 0) rORDER BY    stuage ASC) bwhere s.id=b.id);

受影响的行: 100001
时间: 2.829s

5、执行结果
这里写图片描述

原创粉丝点击