4
sql:递减/递减更新一列字段值
source link: https://blog.51cto.com/mouday/5820709
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
sql:递减/递减更新一列字段值
精选 原创- 新加一个字段
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 |
+----+--------+-----+
- 打赏
- 赞
- 收藏
- 评论
- 分享
- 举报
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK