MySQL:递减/递减更新一列字段值

简介: MySQL:递减/递减更新一列字段值
+关注继续查看

目录

需求说明

  • 新加一个字段age
  • 按照id逆序(由大到小)排序递增设置age字段值

即:

  • id最大的那行的age字段值设置为1
  • id最小的那行的age字段值设置为最大值

最终实现效果

select * from tb_student;
+----+--------+-----+
| id | name   | age |
+----+--------+-----+
|  1 | Tom    |   5 |
|  2 | Jack   |   4 |
|  3 | Steve  |   3 |
|  4 | Yellow |   2 |
|  5 | Green  |   1 |
+----+--------+-----+

环境准备

select version();
+-----------+
| version() |
+-----------+
| 8.0.29    |
+-----------+

初始化数据表

CREATE TABLE `tb_student` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20)  NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
);


INSERT INTO `tb_student`(`id`, `name`) VALUES (1, 'Tom');
INSERT INTO `tb_student`(`id`, `name`) VALUES (2, 'Jack');
INSERT INTO `tb_student`(`id`, `name`) VALUES (3, 'Steve');
INSERT INTO `tb_student`(`id`, `name`) VALUES (4, 'Yellow');
INSERT INTO `tb_student`(`id`, `name`) VALUES (5, 'Green');

查看数据

select * from tb_student;
+----+--------+
| id | name   |
+----+--------+
|  1 | Tom    |
|  2 | Jack   |
|  3 | Steve  |
|  4 | Yellow |
|  5 | Green  |
+----+--------+

需求实现

增加列

ALTER TABLE `tb_student` 
ADD COLUMN `age` int(0) NOT NULL DEFAULT 0 AFTER `name`;

-- 此时的数据
select * from tb_student;
+----+--------+-----+
| id | name   | age |
+----+--------+-----+
|  1 | Tom    |   0 |
|  2 | Jack   |   0 |
|  3 | Steve  |   0 |
|  4 | Yellow |   0 |
|  5 | Green  |   0 |
+----+--------+-----+

关键SQL语句

SET @rownum = 1;
SELECT @rownum := @rownum + 1 AS num;
+------+
| num  |
+------+
|    2 |
+------+

递减更新age字段数据

SET @rownum = 0;

UPDATE tb_student 
SET age = ( SELECT @rownum := @rownum + 1 AS num )
ORDER BY id desc;

更新结果

select * from tb_student;
+----+--------+-----+
| id | name   | age |
+----+--------+-----+
|  1 | Tom    |   5 |
|  2 | Jack   |   4 |
|  3 | Steve  |   3 |
|  4 | Yellow |   2 |
|  5 | Green  |   1 |
+----+--------+-----+


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
关系型数据库 MySQL 数据库
MySql 字段附加属性
MySql 字段附加属性
19 0
|
9天前
|
存储 关系型数据库 MySQL
MySQL长文本字段的选取
MySQL长文本字段的选取
42 0
|
9天前
|
SQL 存储 关系型数据库
MySQL explain各字段的含义
MySQL explain各字段的含义
30 0
MySQL explain各字段的含义
|
2月前
|
存储 SQL 关系型数据库
mysql的varchar字段最大长度真的是65535吗?
mysql的varchar字段最大长度真的是65535吗?
42 0
|
3月前
|
存储 关系型数据库 MySQL
MySQL什么是数据库,什么是数据表,什么是字段,一个项目中可以存在多个数据库吗?
MySQL什么是数据库,什么是数据表,什么是字段,一个项目中可以存在多个数据库吗?
40 0
|
3月前
|
关系型数据库 MySQL
Mysql排序字段为NULL如何排序
讲述工作中遇到的Mysql排序字段为NULL时如何排序
|
3月前
|
SQL 安全 关系型数据库
php开发实战分析(8):mysql类库的操作高级使用API开发(字段操作、权限分配、日期格式、跨表查询,数据分表)
php开发实战分析(8):mysql类库的操作高级使用API开发(字段操作、权限分配、日期格式、跨表查询,数据分表)
252 0
|
3月前
|
SQL 关系型数据库 MySQL
php开发实战分析(1):mysql操作字段(添加、删除、修改,多数据表中新增多个字段)
php开发实战分析(1):mysql操作字段(添加、删除、修改,多数据表中新增多个字段)
61 0
|
3月前
|
关系型数据库 MySQL 索引
Mysql索引是越多越好嘛? 什么样的字段需要建索引, 什么样的字段不需要 ?
MySQL索引的数量并不是越多越好,过多的索引可能会导致性能下降和存储空间的浪费。
62 0
|
3月前
|
关系型数据库 MySQL
mysql统计数据表中同一字段不同状态的COUNT()语句
mysql统计数据表中同一字段不同状态的COUNT()语句
30 0
推荐文章
更多