Soalan anda melibatkan pengemaskinian berbilang rekod pangkalan data dengan satu pertanyaan, khususnya apabila perubahan itu berdasarkan pengubahsuaian rekod tunggal. Dalam kes anda, anda ingin melaraskan susunan item dalam senarai berdasarkan pergerakan item tertentu.
Terdapat beberapa cara untuk mendekati perkara ini menggunakan SQL. Satu kaedah, yang anda nyatakan, melibatkan penggunaan berbilang pertanyaan. Mula-mula, pilih rekod yang berkaitan, dan kemudian gunakan kod pengaturcaraan untuk mengubah suai data dan mengemas kini rekod. Walau bagaimanapun, seperti yang anda nyatakan, pendekatan ini tidak sesuai kerana sifat segerak dan potensinya untuk berbilang pertanyaan.
Satu lagi penyelesaian berasaskan SQL ialah memanfaatkan pernyataan berikut:
<code class="sql">UPDATE my_table SET position = position * 10;</code>
Ini mengubah suai data dengan cara yang memudahkan kemas kini rekod yang mudah. Untuk mengalihkan item ke atas atau ke bawah senarai, anda boleh mengemas kini medan kedudukan untuk item tersebut dengan sewajarnya. Sebagai contoh, untuk menjadikan Pears item kedua, anda akan menggunakan:
<code class="sql">UPDATE my_table SET position = 15 WHERE listId=1 AND name = 'Pears';</code>
Ini memberikan Pears kedudukan 10 kali lebih besar daripada nilai sebelumnya. Walau bagaimanapun, jika anda terus membuat perubahan, jurang mungkin muncul antara kedudukan item. Untuk mengelakkan ini, laksanakan pertanyaan berikut secara berkala:
<code class="sql">UPDATE my_table SET position = position * 10;</code>
Ini akan memastikan bahawa sentiasa ada 9 kedudukan yang tersedia antara setiap item. Dengan melaksanakan pernyataan SQL ini, anda boleh mengemas kini berbilang rekod dengan cekap dengan satu pertanyaan, memudahkan proses menyusun semula item dalam senarai.
Atas ialah kandungan terperinci Bagaimana Mengemas kini Berbilang Rekod Dengan Cekap Berdasarkan Perubahan Rekod Tunggal dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!