Например, у меня есть таблица, которая выглядит так:
id | имя
1 | Mike
2 | Адам
3 | John
4 | Сара
...
Теперь, когда я выполню запрос select * from table order by id desc
, он выдаст что-то вроде этого:
4 | Сара
3 | John
2 | Адам
1 | Mike
Что мне делать, если я хочу переместить строку Джона вверх или вниз или переместить строку Адама вверх или вниз (с помощью запроса MySQL (мне нужен базовый, просто чтобы узнать, с чего начать)).
Мое решение:
Прежде всего, я создал еще один столбец с именем orderID
, который имеет то же значение, что и идентификатор.
Вот пример, который перемещает пользователя вверх:
$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);
Есть ли лучший способ сделать это?