MySQL 上移/下移/置顶
在编写网站系统时,难免会用到上移、下移、置顶的功能,今天小编就介绍一下我的思路。
首先,需要一张数据表:
CREATE TABLE `a` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`gender` varchar(255) NOT NULL,
`psw` varchar(255) NOT NULL,
`seq` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (1, 'zsan', 30, 'f', '', 1);
INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (2, 'lisi', 31, 'f', '', 2);
INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (3, 'wangwu', 32, 'm', '', 3);
INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (4, 'zhaoliu', 33, 'm', '', 4);
INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (5, 'baiqi', 34, 'm', '', 5);
INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (6, 'hongba', 35, 'f', '', 6);
字段中有用的是id和seq,id作为主键标识一条数据,seq标记这条数据的顺序,也是在上移、下移以及置顶操作中,order by的字段。
一、置顶
先说思路,首先,需要获取需要置顶的数据POJO,将表中seq字段小于POJO顺序的所有数据的seq增加1,再将POJO的seq设置为1,最后在查询表时,按seq增序排列,就能看到置顶的效果。
上SQL代码:
-- 置顶id=4,seq=4的数据
update a set seq = seq+1 where seq<4;
update a set seq=1 where id=4;
select * from a ORDER BY seq asc
上效果图:
置顶前查询:

置顶后查询:

二、上移
思路:
获取本条数据和上一条数据内容,将两条数据的seq作交换
将原数据库中id为2和3的数据内容交换,从前端传入本条数据的id,即3,获取本条数据内容,将获取到的内容存入POJO3
select * from a where id=3
获取上一条数据内容(这里POJO3.getSeq()的值为4,各位小伙伴执行SQL语句时,自行替换),将获取到的内容存入POJO2。
SELECT * from a WHERE ( seq < POJO3.getSeq() OR seq=(SELECT MIN(seq) FROM a ) ) ORDER BY seq DESC limit 1
交换POJO2和POJO3的顺序。
update a set seq=POJO3的seq值 where id=2;
update a set seq=POJO2的seq值 where id=3;
上效果图
上移前查询:

上移后查询:

三、下移
思路:
获取本条数据和下一条数据内容,将两条数据的seq作交换
将原数据库中id为3和4的数据内容交换,从前端传入本条数据的id,即3,获取本条数据内容,将获取到的内容存入POJO3
select * from a where id=3
获取下一条数据内容(这里POJO3.getSeq()的值为3,各位小伙伴执行SQL语句时,自行替换),将获取到的内容存入POJO4。
SELECT * from a WHERE ( seq > POJO3.getSeq() OR seq=(SELECT MAX(seq) FROM a ) ) ORDER BY seq ASC limit 1
交换POJO3和POJO4的顺序。
update a set seq=POJO4的seq值 where id=3;
update a set seq=POJO3的seq值 where id=4;
上效果图
下移前:

下移后:

以上均为单独操作数据库文件结果,现附上完整Spring MVC实现上述内容的 完整代码
备注:代码使用Spring Boot框架
MySQL 上移/下移/置顶的更多相关文章
- 表格中上移下移置顶的js操作
<script> $(function(){ //上移 var $up = $(".up") $up.click(function() { var $tr = ...
- jQuery操作table数据上移、下移和置顶
jQuery 操作table中的tr换行的步骤如下: 1.获取当前tr var $tr = $(this).parents("tr"); 2.移动tr //上移 $tr.prev( ...
- mysql选择上一条、下一条数据记录,排序上移、下移、置顶
1.功能须要 完毕列表排序上移,下移,置顶功能.效果例如以下图所看到的: 2设置思路 设置一个rank为之间戳,通过选择上移,就是将本记录与上一条记录rank值交换,下移就是将本条记录与下一条记录ra ...
- jQuery 元素的选中, 置顶、上移、下移、置底、删除
如截图: <ul> <li class="li01" onclick="C_columnSetTop(this)"><i>& ...
- jquery实现标签上移、下移、置顶
eg:如在后台的标签列表中,实现上移.下移.置顶功能 思路: 1.先用到的克隆方法.clone(true): 即把当前要移动的项先保存好,备于后用. 2.找到当前标签所对应的相关元素及其相关方法: 如 ...
- js上移、下移、置顶、置底功能实现
实现页面上列表内容上移.下移.置顶.置底 功能,主要实现思路是节点操作,比如说:上移,直接把点击项移动到前一个节点,以此类推,当然实际代码实现还要加些判断,如当前点击操作项是否已经是置底或置底了,如果 ...
- jQuery实现表格行上移下移和置顶
jQuery实现表格行上移下移和置顶 我们在操作列表数据的时候,需要将数据行排列顺序进行调整,如上移和下移行,将行数据置顶等,这些操作都可以在前端通过点击按钮来完成,并且伴随着简单的动态效果,轻松实现 ...
- mysql分页查询按某类型置顶 按某类型置尾 再按优先级排序
近段时间接到一个新需求: 第一优先级:未满的标的顺位高于已满标的顺位.第二优先级:新手标的顺位高于其他标的的顺位. 第三优先级:标的剩余可投金额少的顺位高于标的剩余可投金额多的. 我是直接通过sql语 ...
- javaWeb上移下移(SpringMVC+Mabits+MySql)
文章已移至:https://blog.csdn.net/baidu_35468322/article/details/79643356 移动之前: 移动之后: 1.控制层 /** * 修改排序 * * ...
随机推荐
- css-float浮动详细
前言 pc端的页面为了保持良好的兼容性,一般会使用css2部分就支持的浮动(float)和定位(postion)来布局.浮动行为怪异,但有迹可循.以下下是在css揭秘一书中总结的浮动内幕. 包含块:浮 ...
- scrapy 安装错误
真的是各种坑啊,哎 安装显示 Building wheel for twisted (setup.py) ... error 解决方法: https://askubuntu.com/questions ...
- ACM2017Tsukuba:H - Homework
第一问求最多,不需要区分数学作业和信息作业,直接模拟就行了 第二问考虑每天只能产生1的贡献,每天拆成两个点,限制每天只能有1的贡献,剩下的源点连数学作业,信息作业连汇点,再将数学作业和信息作业连能连的 ...
- JIRA中的标记语言的语法参考
前言 看到网上有的文章说JIRA是使用Textile这门标记语言,有些语法和Wikitext和Markdown相像.JIRA在2017年进行了一次大更新,某些语法可能和以前不大一样,这里纪录一下常用的 ...
- [题解]luogu_AT1224_JOIOJI
https://www.cnblogs.com/fengzhiyuan/p/7588443.html 不会map,有点菜 1.要想知道三个字母出现次数相等, 为J [ i ]-J [ j ]== O[ ...
- VPS/云主机CPU占用100%故障排查
VPS/云主机CPU占用100%故障排查 方法/步骤 通常情况下云主机/VPS的CPU一般不会占用100%,内存资源也不会占完.若您的服务器经常CPU资源100%,可以打开任务管理器,查看是哪个进程引 ...
- Java 多态抽象
- (转)Quirks模式与standards模式区别
建议:不推荐使用Quirks Mode. Quirks Mode中发生了什么?Quirks Mode是一种浏览器(像IE,Firefox,Opera)操作模式.从根本上说,怪异模式(也称之为兼容模式) ...
- Aop第一节
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入 ...
- Django2.0路由补充之path,re_path及视图层
以下是Django2.0版本 正则捕获到的参数都是字符串,所以如果函数需要用的其他数据类型,可以在函数中直接转换,也可以在路由中直接转换,如下: 下面实例是匹配整数,传过去的参数就是整数 from d ...