Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zaktualizuj listę rzeczy bez uderzania w każdy wpis

Załóżmy, że @old to wartość 4 dla starej pozycji jabłek, a @new to nowa pozycja 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);

Użyłem MySQL 5.1.52 do przetestowania tego na przykładowych danych i działa. Identyczny kod SQL działa również, jeśli musisz przenieść wczesny wpis, aby był później, lub przenieść go w środku itp. Po prostu ustaw wartości @old i @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. mysql błąd 1292 podczas używania cast w instrukcji aktualizacji

  2. Jak połączyć dwie bazy danych, z tymi samymi danymi, ale z różnymi PK, bez duplikowania pól?

  3. Błąd:obiekt klasy CI_DB_mysql_result nie mógł zostać przekonwertowany na ciąg

  4. Jak uciec od pojedynczego cudzysłowu i znaków specjalnych w MySQL

  5. Łącznik MySQL 6.7.4 i wyjątki Entity Framework 5