mysql 實現上移和下移 置頂

2021-10-07 03:01:09 字數 3390 閱讀 2785

今天做後台管理系統時候,要實現上移和下移 置頂的功能,記錄一下。

首先呢,先建立一張表

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'

,'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的字段。

獲取本條資料和上一條資料內容,將兩條資料的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;

需要獲取需要置頂的資料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

c 子窗體的上移 下移 置頂和置底的方法

c 子窗體的上移 下移 置頂和置底的方法,涉及到控制項的z軸次序屬性。例如,動態生成的子窗體,加入到panel控制項中,當第乙個加入panel控制集合的index索引值為0。新增加乙個視窗,會出現在最上面,index索引值為0,在後面的窗體index索引值為index 1。使用窗體的sendtoba...

java實現列表的上下移動和置頂操作

一 上下移動 1 在資料庫表中新新增一列名為sort,初始值與各條資料的id相同,初始list排序按照sort的值排序。2 思路是向上移動的時候,查詢出當前資料的上一條資料的sort值,兩者交換sort值,同理向下移動的時候,查詢出下一條資料的sort值,兩者交換。3 ssm框架中的sql及 實現 ...

java實現列表的上下移動和置頂操作

一 上下移動 1 在資料庫表中新新增一列名為sort,初始值與各條資料的id相同,初始list排序按照sort的值排序。3 ssm框架中的sql及 實現 2 依次交換sort資料 for int i 0 ifor usertest e list public static void swap2 li...