Например, у меня есть таблица, которая выглядит так:
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);
Есть ли лучший способ сделать это?