Rumah > Artikel > pangkalan data > Bagaimanakah Anda Boleh Menyusun Semula Berbilang Rekod dalam Satu Pertanyaan SQL Tanpa Penalti Prestasi?
Menyusun Semula Berbilang Rekod dengan SQL
Dalam senario pangkalan data hubungan ini, anda mempunyai jadual yang mengandungi bahan makanan dengan medan "Kedudukan" yang menunjukkannya paparan susunan dalam senarai (dikenal pasti oleh "listID"). Tugasnya ialah untuk mengalihkan item (cth., "Pear") ke kedudukan baharu (cth., sebelum "Cip") dalam senarai tertentu. Mencapai ini dengan satu pertanyaan SQL memerlukan pendekatan yang bertimbang rasa.
Satu pendekatan biasa adalah untuk mendapatkan semula rekod yang terjejas menggunakan pertanyaan seperti:
<code class="sql">SELECT id, position FROM my_table WHERE listID = 1 AND position BETWEEN 1 AND 5;</code>
Pertanyaan ini mendapatkan semula ID dan kedudukan semua rekod antara kedudukan semasa dan sasaran.
Walau bagaimanapun, pendekatan alternatif wujud yang menghapuskan keperluan untuk berbilang pertanyaan. Dengan mengubah suai data untuk memperkenalkan "jurang" antara kedudukan, anda boleh memudahkan proses kemas kini.
Jalankan pertanyaan berikut:
<code class="sql">UPDATE my_table SET position = position * 10;</code>
Ini mendarabkan semua kedudukan dengan 10, dengan berkesan mewujudkan lebih besar jurang antara mereka.
Untuk mengalihkan Pears ke kedudukan kedua, laksanakan:
<code class="sql">UPDATE my_table SET position = 15 /* New position for "Pears" */ WHERE listID = 1 AND name = 'Pears';</code>
Ini melaraskan kedudukan Pears kepada 15, meninggalkan jurang di mana ia diduduki sebelum ini.
Untuk menghapuskan kemungkinan jurang selepas berbilang operasi penyusunan semula, laksanakan secara berkala:
<code class="sql">UPDATE my_table SET position = position * 10; /* Increase gaps */</code>
Pendekatan ini menyediakan penyelesaian yang lebih cekap untuk menyusun semula berbilang rekod dengan satu pertanyaan SQL, memastikan item kekal dalam susunan yang dikehendaki tanpa prestasi penalti.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menyusun Semula Berbilang Rekod dalam Satu Pertanyaan SQL Tanpa Penalti Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!