sql >> Database teknologi >  >> RDS >> Mysql

Opdater en liste over ting uden at trykke på hver post

Antag @old er værdien 4 for æblers gamle position og @new er den nye stilling 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);

Jeg brugte MySQL 5.1.52 til at teste dette på dine eksempeldata, og det virker. Den identiske SQL fungerer også, hvis du har brug for at flytte en tidlig post til at være senere, eller flytte en i midten osv. Du skal blot indstille værdierne for @old og @new .



  1. Lære 2 - 2 decimaler på en flyder?

  2. Sådan dropper du flere tabeller i PostgreSQL ved hjælp af et jokertegn

  3. Undgå denne almindelige fejl, når du udfører lagret procedure i MS Access

  4. Oracle SQL pivotforespørgsel