Dalam pangkalan data, ia boleh menjadi penting untuk mengenal pasti nilai berangka terkecil yang tidak digunakan dalam lajur tertentu. Nilai ini sering digunakan untuk memberikan pengecam unik kepada rekod masuk. Dalam konteks SQL Server, terdapat pertanyaan SQL yang cekap yang memenuhi keperluan ini.
SELECT TOP 1 t1.Id+1 FROM table t1 WHERE NOT EXISTS(SELECT * FROM table t2 WHERE t2.Id = t1.Id + 1) ORDER BY t1.Id
Pertanyaan ini memanfaatkan subkueri untuk menyemak ketiadaan baris berikutnya dengan nilai Id yang ditambah satu. Dengan mengulangi jadual, ia boleh mencari baris pertama yang memenuhi syarat ini dengan berkesan.
Dalam kes di mana Id terendah yang tersedia tidak semestinya satu, penyelesaian yang lebih komprehensif diperlukan:
SELECT TOP 1 * FROM ( SELECT t1.Id+1 AS Id FROM table t1 WHERE NOT EXISTS(SELECT * FROM table t2 WHERE t2.Id = t1.Id + 1 ) UNION SELECT 1 AS Id WHERE NOT EXISTS (SELECT * FROM table t3 WHERE t3.Id = 1)) ot ORDER BY 1
Pertanyaan ini menggunakan operasi UNION untuk mengambil kira ketiadaan baris dengan Id bersamaan dengan satu. Ia menyemak kedua-dua senario: kewujudan baris berikutnya (seperti sebelumnya) dan kehadiran baris awal dengan Id ditetapkan kepada satu.
Dengan menggunakan pertanyaan SQL ini, pembangun boleh mengenal pasti nombor terkecil yang tidak digunakan dengan mudah dalam lajur yang diberikan, memastikan penetapan pengecam unik yang cekap.
Atas ialah kandungan terperinci Bagaimana untuk mencari nombor terkecil yang tidak digunakan dalam Jadual Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!