Строки порядка php mysql

Например, у меня есть таблица, которая выглядит так:

id | имя

1 | Майк

2 | Адам

3 | Джон

4 | Сара …

Теперь, когда я выполняю запрос select * from table order by id desc он выводит что-то вроде этого:

4 | Сара

3 | Джон

2 | Адам

1 | Майк

Теперь, что мне делать, если я хочу перемещать строку Джона вверх или вниз или перемещать строку Адама вверх или вниз (с запросом MySQL (мне нужен базовый, просто чтобы узнать, с чего начать)).

благодаря

мое решение:

Прежде всего, я создал еще один столбец с именем orderID который имеет то же значение, что и id.

Вот пример, который перемещает пользователя:

  $query = " SELECT ( SELECT orderID FROM test WHERE id = 'user id that i want to move up' ) AS user_order, ( SELECT orderID FROM test WHERE orderID > user_order ORDER BY orderID LIMIT 0,1 ) AS nextUser_order "; $result = mysql_query($query); $data = mysql_fetch_assoc($result); $query = " UPDATE test SET orderID = IF(orderID='{$data[nextUser_order]}', '{$data[user_order]}', '{$data[nextUser_order]}') WHERE orderID IN ('{$data[nextUser_order]}', '{$data[user_order]}'); "; $result = mysql_query($query); 

Есть ли лучший способ сделать это?