Menggunakan Fungsi ROW_NUMBER() dalam Klausa WHERE: Mengatasi Sekatan Fungsi Windowed
Fungsi bertingkap, seperti ROW_NUMBER(), dayakan data berkuasa transformasi dalam set hasil. Walau bagaimanapun, penggunaannya tertakluk kepada kekangan tertentu, salah satunya adalah pengecualiannya daripada klausa WHERE.
Seperti yang ditunjukkan dalam pertanyaan yang dihadapi oleh pengguna, cuba menggunakan ROW_NUMBER() dalam klausa WHERE menghasilkan mesej ralat: "Fungsi bertingkap hanya boleh muncul dalam klausa SELECT atau ORDER BY."
Untuk menangani perkara ini pengehadan, teknik boleh digunakan yang melibatkan pembalut pertanyaan asal dalam Ungkapan Jadual Biasa (CTE), membenarkan pemasukan fungsi bertingkap dalam pertanyaan CTE.
Begini cara untuk melaksanakan penyelesaian ini:
Pertanyaan yang disemak akan kelihatan seperti ini:
WITH MyCte AS ( SELECT employee_id, RowNum = ROW_NUMBER() OVER (ORDER BY employee_id) FROM V_EMPLOYEE ORDER BY Employee_ID ) SELECT employee_id FROM MyCte WHERE RowNum > 0
Dengan membungkus pertanyaan asal dalam CTE, fungsi bertingkap ROW_NUMBER () kini boleh digunakan dalam klausa WHERE, membolehkan penapisan hasil berdasarkannya nilai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan ROW_NUMBER() dalam Klausa WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!