Rumah > pangkalan data > tutorial mysql > Mengapa Saya Tidak Boleh Menggunakan ROW_NUMBER() dalam Klausa WHERE?

Mengapa Saya Tidak Boleh Menggunakan ROW_NUMBER() dalam Klausa WHERE?

Linda Hamilton
Lepaskan: 2024-12-16 18:37:11
asal
746 orang telah melayarinya

Why Can't I Use ROW_NUMBER() in a WHERE Clause?

Ralat Ditemui semasa Menggunakan Fungsi ROW_NUMBER() dalam Klausa WHERE

Timbul persoalan mengenai penggunaan fungsi ROW_NUMBER() dalam WHERE klausa. Seorang pengguna mengalami ralat yang menyatakan, "Fungsi bertingkap hanya boleh muncul dalam klausa SELECT atau ORDER BY" semasa mencuba pertanyaan berikut:

SELECT employee_id
FROM v_employee
WHERE ROW_NUMBER() OVER (ORDER BY employee_id) > 0
ORDER BY employee_id
Salin selepas log masuk

Penyelesaian: Wrapper CTE dengan Fungsi Windowed

Untuk menyelesaikan ralat ini, teknik biasa melibatkan mencipta Common Table Expression (CTE) yang merangkum pengiraan fungsi bertingkap. Dengan membungkus pertanyaan asal dalam CTE, pertanyaan seterusnya boleh mengakses hasil fungsi bertingkap dan menggunakannya dalam klausa WHERE.

Pertanyaan disemak yang melaksanakan penyelesaian ini akan muncul seperti berikut:

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
Salin selepas log masuk

Dengan menggunakan kaedah ini, output fungsi bertingkap tersedia untuk digunakan dalam klausa WHERE, membenarkan pengguna untuk berjaya menapis keputusan berdasarkan kriteria yang dikehendaki.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan ROW_NUMBER() dalam Klausa WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan