Mysql
 sql >> база данни >  >> RDS >> Mysql

Актуализирайте списък с неща, без да удряте всеки запис

Да предположим, че @old е стойността 4 за старата позиция на ябълките и @new е новата позиция 1.

set @old = 4;
set @new = 1;

UPDATE Items
SET `order value` = 
  CASE `order value` WHEN @old THEN @new
  ELSE `order value` + SIGN(@[email protected]) END
WHERE `order value` BETWEEN LEAST(@old, @new) AND GREATEST(@old, @new);

Използвах MySQL 5.1.52, за да тествам това върху вашите примерни данни и работи. Идентичният SQL работи и ако трябва да преместите ранен запис, за да бъде по-късен, или да преместите един в средата и т.н. Просто задайте стойностите на @old и @new .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверете съществува ли колона/ключ?

  2. 500 Вътрешна грешка на сървъра?

  3. MySQL тригер преди вмъкване на колона за актуализиране с нов идентификатор за автоматично увеличение

  4. Искам да вмъкна данни в mysql база данни с помощта на PDO на PHP. Но данните не се въвеждат

  5. Как да използвам хеширане на пароли с PDO, за да направя кода си по-сигурен?