MySQL中怎样更新排序值以及存储过程更新排序值
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下MySQL中怎样更新排序值以及存储过程更新排序值,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!公司有表T
千家信息网最后更新 2026年11月01日MySQL中怎样更新排序值以及存储过程更新排序值
小编给大家分享一下MySQL中怎样更新排序值以及存储过程更新排序值,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
公司有表Task 和 Question,
Question表大致如下
id,bigint(20)student_id,bigint(20)task_id,bigint(20)name,varchar(100)ranking,int(11) not null default 999 comment '排序 根据ranking和id一起排序'
如上所示, 当查询时只需sql加个排序就行, order by ranking, id, 这样新增时不用先获取最大ranking值(或count);
现在新增需求, 此时ranking最好在增删改时, 重新排序好(从1开始到结束), 需要将已有数据排序好:
# 先定义一个变量ranking, 在update时自增set @ranking = 0;update task_question set ranking = (@ranking := @ranking+1) where task_id = #{Task表主键} order by ranking, id;但是以上sql只能更新某一个Task的数据, 我这里需要更新所有的Task, 所以写了一个存储过程:
# delimiter $$ ????drop procedure if exists test; # 如果存在名字为test的procedure则删除create procedure test() # 创建(创建函数使用的关键字为function 函数名())begin declare taskId bigint; declare flag int default 0; # 这是重点,定义一个游标来记录sql查询的结果(此处的知识点还有SQL的模糊查询,见补充) declare taskList cursor for select id from task; # 为下面while循环建立一个退出标志,当游标遍历完后将flag的值设置为1 declare continue handler for not found set flag=1; open taskList; # 打开游标 # 将游标中的值赋给定义好的变量,实现for循环的要点 fetch taskList into taskId; while flag <> 1 do # 在这里设置一个局部变量 ranking set @ranking = 0; update task_question set ranking = (@ranking := @ranking+1) where task_id = taskId order by ranking, id; # 游标后移 fetch taskList into taskId; end while; close taskList; # 关闭游标end;# $$# 执行存储过程call test();
以上是"MySQL中怎样更新排序值以及存储过程更新排序值"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
排序
更新
游标
过程
存储
变量
篇文章
查询
内容
函数
数据
知识
循环
最大
不怎么
不用
公司
关键
关键字
只需
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技
什么是科技互联网
互联网是第几次科技革命的成果
华服互联网科技怎么样
互联网科技网
互联网科技工作委员会主任
互联网的科技
互联网属科技
互联网电商科技
涨乐互联网科技
中资互联网科技
高科技与互联网
互联网科技视频
互联网金融科技创新
苏州互联网科技贷款公司
滨湖区互联网智能科技产品供应
老年人脱离互联网科技的作文
港股科技和互联网
厦门千工互联网科技有限公司
雨阳互联网卡科技有限公司
互联网科技产业
国智互联网科技
互联网科技中介
互联网经济与金融科技
青岛科技大学互联网大赛研究生
996高科技互联网公司
徐州市互联网科技有限公司
2021世界互联网领先科技成果发布
上海万顺科技互联网有限公司招聘
科技和互联网行业的特点