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

Duy trì / cập nhật thứ tự bản ghi trong mysql

Một cái gì đó như thế này có làm được không?

UPDATE items 
SET position = CASE position 
  WHEN $oldpos THEN $newpos 
  ELSE position + SIGN($oldpos-$newpos)
 END
WHERE position BETWEEN LEAST( $newpos, $oldpos ) 
                AND GREATEST( $newpos, $oldpos );

Tôi đã thử nghiệm nó một vài lần và nó có vẻ hoạt động.



  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ối ưu hóa INSERT tốc độ bị chậm lại do các chỉ số

  2. Trợ giúp về thuật toán truy vấn MYSQL trong PHP

  3. Một chuỗi được mã hóa base64 có thể chứa khoảng trắng không?

  4. Chuyển đổi lịch Jalali sang Gregorian bằng PHP trong CodeIgniter

  5. Làm cách nào để chèn dữ liệu có giá trị tự động vào Ngày tạo và Ngày cập nhật bằng Spring, Hibernate?