Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menggunakan kolom urutan pengurutan dalam tabel database

Update product set order = order+1 where order >= @value changed

Meskipun seiring waktu Anda akan mendapatkan "spasi" yang lebih besar dan lebih besar dalam pesanan Anda, tetapi itu akan tetap "mengurutkan"

Ini akan menambahkan 1 ke nilai yang diubah dan setiap nilai setelahnya dalam satu pernyataan, tetapi pernyataan di atas masih benar. "spasi" yang lebih besar dan lebih besar akan terbentuk dalam pesanan Anda yang mungkin mencapai titik melebihi nilai INT.

Solusi alternatif yang diberikan keinginan tanpa spasi:

Bayangkan sebuah prosedur untuk:UpdateSortOrder dengan parameter @NewOrderVal, @IDToChange,@OriginalOrderVal

Proses dua langkah tergantung apakah pesanan baru/lama bergerak naik atau turun.

If @NewOrderVal < @OriginalOrderVal --Moving down chain 

--Create space for the movement; no point in changing the original 
    Update product set order = order+1 
    where order BETWEEN @NewOrderVal and @OriginalOrderVal-1;

end if

If @NewOrderVal > @OriginalOrderVal --Moving up chain

--Create space  for the momvement; no point in changing the original  
  Update product set order = order-1 
  where order between @OriginalOrderVal+1 and @NewOrderVal
end if

--Finally update the one we moved to correct value

    update product set order = @newOrderVal where [email protected];

Mengenai praktik terbaik; sebagian besar lingkungan tempat saya berada biasanya menginginkan sesuatu yang dikelompokkan berdasarkan kategori dan diurutkan menurut abjad atau berdasarkan "popularitas yang dijual" sehingga meniadakan kebutuhan untuk menyediakan pengurutan yang ditentukan pengguna.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat Tabel HTML dengan SQL UNTUK XML

  2. Perbedaan antara CTE dan SubQuery?

  3. SQL Server 2005 ROW_NUMBER() tanpa ORDER BY

  4. Bagaimana LEFT OUTER JOIN mengembalikan lebih banyak catatan daripada yang ada di tabel kiri?

  5. Apa itu SQL Server?