2016-09-22 3 views
0

У меня есть таблица в MySQL с полем «Заказ». Это просто цифры с добавлением auto. Теперь я задаюсь вопросом, есть ли запрос для изменения значений от последнего к первому ... Таким образом, запись с заказом 205 должна стать 1, 204 -> 2 и т. Д.Значения переключателя в таблице MySQL

Это на самом деле не автоматическое приращение. Проблема в том, что я начал добавлять проекты с текущего сайта. Со страницы 1 на стр. 20, но первый элемент на странице 1 является последним. То, как я добавил новые проекты, самый новый на последней странице.

Если поле заказа переключено, новые добавленные элементы будут правильно пронумерованы и будут добавлены на первую страницу. Это просто неправильно, я начал добавлять старые проекты ...

Structure

Examples of the content

+2

Изменение автоинкрементных значения реальной плохая идея, почему бы не просто использовать 'порядок by' для отображения цели ? –

+0

Добавьте более подробную информацию, примеры данных и пример. –

+0

Подробнее добавлено :) –

ответ

0

Я не могу комментировать из-за ограничений, но я действительно согласен с @Abhik Чакраборти. Вы не хотите этого делать. Просто используйте заказ, как он предложил. Пример:

SELECT * FROM tableName 
ORDER BY columnName DESC; 

Только в случае, если вы хотели бы узнать о нем больше: http://www.w3schools.com/sql/sql_orderby.asp

0

Попробуйте это как вызов один заявление:

SET @MaxSort := (SELECT MAX(Ordering) FROM MyTable); 
    UPDATE MyTable t set t.Ordering = (@MaxSort + 1 - t.Ordering); 

Это будет работать, если поле не имеет уникальное ограничение. Но это поле не должно быть поле auto_increment на первом месте. Автоматическое увеличение увеличивается, не уменьшая счетчик. Кроме того, если вы просто попытаетесь исправить существующие данные, и новые записи будут увеличиваться.

Дополнительное объяснение

Спасибо за указание его. Множественный запрос внутри одного запроса запроса не работает с php_mysqli, и он не используется из-за потенциальной атаки на инъекцию MySQL, если серверу это удается. Возможно, вы можете настроить PHPMyAdmin на использование PHP PDO.

Я могу использовать несколько запросов, но я использую PHP PDO или DBeaver database manager.

Я могу только предположить, чтобы поставить MaxSort вручную (так как это один раз, работа в любом случае):

UPDATE 
    MyTable t 
set 
    t.Ordering = 254 - t.Ordering + 1; 
+0

Теперь я добавил скриншоты таблицы и структуры –

+0

Пробовал этот SQL-запрос, но, похоже, не работал ... SET @MaxSort: = (SELECT MAX (ordering) FROM aaa_advportfoliopro_projects); UPDATE aaa_advportfoliopro_projects t set t.ordering = (@MaxSort + 1 - t.ordering); –

Смежные вопросы