Похоже, вам нужен еще один столбец, как "ListOrder". Таким образом, ваш стол может выглядеть так:
BookMark ListOrder
======== =========
d 1
g 2
b 3
f 4
a 5
Тогда вы можете «заказать» ListOrder.
Select * from MyTable Order By ListOrder
Если пользователь может перемещать закладки только по одному месту за раз, вы можете использовать целые числа как ListOrder и поменять их местами. Например, если пользователь хочет переместить «f» на одну строку вверх:
Update MyTable
Set ListOrder=ListOrder+1
Where ListOrder=(Select ListOrder-1 From MyTable where BookMark='f')
Update MyTable
Set ListOrder=ListOrder-1
Where BookMark='f'
Если пользователь может переместить закладку вверх или вниз на несколько строк одновременно, вам необходимо изменить порядок сегментов. Например, если пользователь хочет переместить «f» в начало списка, вам необходимо:
update MyTable
Set ListOrder=ListOrder+1
where ListOrder>=1 -- The New position
and ListOrder <(Select ListOrder from MyTable where BookMark='f')
update MyTable
Set ListOrder=1 -- The New Position
Where Bookmark='f'