Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Perbarui daftar hal-hal tanpa menekan setiap entri

Misalkan @old adalah nilai 4 untuk posisi lama apel, dan @new adalah posisi baru 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);

Saya menggunakan MySQL 5.1.52 untuk menguji ini pada data contoh Anda dan berhasil. SQL yang sama juga berfungsi jika Anda perlu memindahkan entri awal ke yang lebih baru, atau memindahkan satu di tengah, dll. Cukup atur nilai @old dan @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. Melewati nama kolom sebagai parameter ke prosedur tersimpan di mySQL

  2. mysql.connector.errors.InterfaceError:2026 (HY000)

  3. Laravel menghitung jumlah dua kolom dengan kondisi

  4. MySQL mengubah tabel dan mengonversi data dari teks ke datetime

  5. aplikasi terhubung ke database