sql >> Base de Datos >  >> RDS >> Mysql

Actualice una lista de cosas sin presionar cada entrada

Supongamos que @old es el valor 4 para la posición anterior de las manzanas, y @new es la nueva posición 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);

Usé MySQL 5.1.52 para probar esto en sus datos de ejemplo y funciona. El SQL idéntico también funciona si necesita mover una entrada temprana para que sea posterior, o mover una en el medio, etc. Simplemente configure los valores de @old y @new .