sql >> Databáze >  >> RDS >> Mysql

Aktualizujte seznam věcí, aniž byste zasáhli každý záznam

Předpokládejme @old je hodnota 4 pro starou pozici jablek a @new je nová pozice 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);

Použil jsem MySQL 5.1.52, abych to otestoval na vašich příkladech dat a funguje to. Identické SQL také funguje, pokud potřebujete přesunout dřívější položku, aby byla později, nebo přesunout jednu uprostřed atd. Stačí nastavit hodnoty @old a @new .



  1. Datový typ pro ukládání IP adresy na SQL Server

  2. Vyberte z jedné tabulky, kde v jiné ne

  3. odstranit řádek v mé databázi pomocí php pdo

  4. Jak nahradit nový řádek v Oracle