说明:本文按照数字升序方式排列
一、上移
1. 查询第一条数据的排序值,然后判断目标数据是否是第一个
SELECT
IFNULL(min(sort), 1)
FROM
table
2. 不是第一条则查询前一条数据
select
*
from
table
where
sort < #{sort} --sort为目标数据的排序值
order by
sort desc
limit 1
3. 交换两条数据的排序值
二、下移
1. 查询最后一条数据,然后判断目标数据是否是最后一个
SELECT
IFNULL(MAX(sort), 1)
FROM
table
2. 不是则查询后一条数据
select
*
from
table
where
sort > #{sort} --sort为目标数据的排序值
order by
sort asc
limit 1
3. 交换两条数据的排序值
三、置顶
1. 查询第一条数据的排序值,然后判断目标数据是否是第一个
SELECT
IFNULL(min(sort), 1)
FROM
table
2. 不是则将第一条数据的排序值-1更新目标数据