sql >> Databasteknik >  >> RDS >> Mysql

Uppdatera en lista med saker utan att trycka på varje post

Antag att @old är värdet 4 för den gamla positionen för äpplen och @new är den nya positionen 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);

Jag använde MySQL 5.1.52 för att testa detta på din exempeldata och det fungerar. Den identiska SQL-koden fungerar också om du behöver flytta en tidig post för att bli senare, eller flytta en i mitten, etc. Ställ bara in värdena för @old och @new .



  1. Oracle till PostgreSQL:ANSI yttre kopplingssyntax i PostgreSQL

  2. LIMIT offset eller OFFSET i en UPDATE SQL-fråga

  3. Uppdatera data till tabell från dynamiskt skapat inmatningsfält

  4. MySQL Event If Statement END IF Error