java+mysql实现上移和下移 和置顶

本文介绍如何使用MySQL实现数据记录的上移、下移及置顶操作。通过调整记录的顺序字段,可以轻松地改变数据在列表中的位置。适用于需要灵活调整展示顺序的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql 实现上移和下移 和置顶

实现上移和下移 和置顶

今天实现一个功能 就是对数据的上移和下移和顶置

// An highlighted block
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `order` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

INSERT INTO `test`(`id`, `name`, `order`) VALUES (1, '1', 1);
INSERT INTO `test`(`id`, `name`,  `order`) VALUES (2, '2',  2);
INSERT INTO `test`(`id`, `name`,  `order`) VALUES (3, '3', 3);
INSERT INTO `test`(`id`, `name`,  `order`) VALUES (4, '3',  4);
INSERT INTO `test`(`id`, `name`, `order`) VALUES (5, '4',  5);
INSERT INTO `test`(`id`, `name`,  `order`) VALUES (6, '6',  6);

首先字段中有用的是id和order,id作为主键标识一条数据,order标记这条数据的顺序,也是在上移、下移以及置顶操作中,order by的字段。

上移

主要思路是获取本条数据和上一条数据内容,将两条数据的order标记作交换

将原数据库中id为2和3的数据内容交换,从前端传入本条数据的id,即3,获取本条数据内容,将获取到的内容存入实体类中test3

// An highlighted block
//select * from test where id=3
//这样就获取到 id为2的数据了
SELECT id  , order  from test WHERE ( order< (select * from test where id=3)  OR order=(SELECT MIN(order) FROM test ) )  ORDER BY order DESC limit 1
update test set order =test3 的order 值 where id=2;
update test set order =test2 的order 值 where id=3;

下移

几乎思路相同只是取值的范围相反

SELECT id  , order  from test WHERE  ( order> (select * from test where id=3)  OR order=(SELECT MAX(order) FROM test ) )  ORDER BY order ASC limit 1
update test set seq=test4 的order 值 where id=3;
update test set seq=test3 的order 值 where id=4;

置顶

-- 置顶id=4,order=4的数据
update test set order= order+1 where order<4;
update test set order=1 where id=4;
select * from test ORDER BY order asc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值