Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan ROW_NUMBER() Tanpa ORDER BY dalam SQL Server 2005?
ROW_NUMBER() tanpa ORDER BY dalam SQL Server 2005
Dalam SQL Server 2005, fungsi ROW_NUMBER() boleh digunakan untuk menjana nombor jujukan unik untuk setiap baris dalam set hasil. Walau bagaimanapun, tidak seperti rakan sejawatannya dalam versi kemudian, ROW_NUMBER() dalam SQL Server 2005 memerlukan klausa ORDER BY yang jelas. Had ini menimbulkan cabaran apabila cuba menjana nombor berjujukan tanpa mengubah susunan asal data.
Penyelesaian:
Untuk mengatasi had ini, kita boleh mengelak daripada menyatakan pesanan eksplisit menggunakan pertanyaan berikut sintaks:
INSERT INTO TargetTable (ID, FIELD) SELECT Row_Number() OVER (ORDER BY (SELECT 1)) + Coalesce( (SELECT Max(ID) FROM TargetTable WITH (TABLOCKX, HOLDLOCK)), 0 ), FieldValue FROM SourceTable WHERE {somecondition};
Penjelasan:
Pertimbangan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan ROW_NUMBER() Tanpa ORDER BY dalam SQL Server 2005?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!