MySQL 上移/下移/置顶
2018-10-10 08:39:17来源:博客园 阅读 ()
在编写网站系统时,难免会用到上移、下移、置顶的功能,今天小编就介绍一下我的思路。
首先,需要一张数据表:
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, 'zhangsan', 30, 'f', '123456', 1); INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (2, 'lisi', 31, 'f', '123456', 2); INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (3, 'wangwu', 32, 'm', '123456', 3); INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (4, 'zhaoliu', 33, 'm', '123456', 4); INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (5, 'baiqi', 34, 'm', '123456', 5); INSERT INTO `a`(`id`, `name`, `age`, `gender`, `psw`, `seq`) VALUES (6, 'hongba', 35, 'f', '123456', 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实现上述内容的 完整代码
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Hello World
下一篇:JNI使用方法
- JSP+SSH+Mysql+DBCP实现的租车系统 2020-06-09
- JSP+Structs+JDBC+mysql实现的诚欣电子商城 2020-06-08
- Java高级实战Maven+JSP+SSM+Mysql实现的音乐网站,70%人不会 2020-06-04
- Maven+JSP+SSM+Mysql实现的音乐网站 2020-06-03
- MySQL如何有效的存储IP地址 2020-05-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash