Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cập nhật danh sách mọi thứ mà không cần nhấn vào mọi mục nhập

Giả sử @old là giá trị 4 cho vị trí cũ của táo và @new là vị trí mới 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);

Tôi đã sử dụng MySQL 5.1.52 để kiểm tra điều này trên dữ liệu mẫu của bạn và nó hoạt động. SQL giống hệt nhau cũng hoạt động nếu bạn cần di chuyển một mục nhập sớm sang mục nhập sau hoặc di chuyển một mục nhập vào giữa, v.v. Chỉ cần đặt các giá trị của @old@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:Tách một bảng lớn thành các phân vùng hay các bảng riêng biệt?

  2. Chuỗi orX trong trình tạo truy vấn Doctrine2

  3. Cách thực hiện:Xếp hạng Kết quả Tìm kiếm

  4. Bảng thả xuống khiến MySQL bị treo

  5. Tính tuổi từ ngày sinh trong mysql