Heim > Datenbank > MySQL-Tutorial > Warum kann ich ROW_NUMBER() nicht in einer WHERE-Klausel verwenden?

Warum kann ich ROW_NUMBER() nicht in einer WHERE-Klausel verwenden?

Linda Hamilton
Freigeben: 2024-12-16 18:37:11
Original
746 Leute haben es durchsucht

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

Bei der Verwendung der Funktion ROW_NUMBER() in der WHERE-Klausel ist ein Fehler aufgetreten

Es ist eine Frage bezüglich der Verwendung der Funktion ROW_NUMBER() innerhalb der WHERE aufgetreten Klausel. Bei einem Benutzer ist beim Versuch der folgenden Abfrage die Fehlermeldung „Fensterfunktionen können nur in den SELECT- oder ORDER BY-Klauseln angezeigt“ aufgetreten:

SELECT employee_id
FROM v_employee
WHERE ROW_NUMBER() OVER (ORDER BY employee_id) > 0
ORDER BY employee_id
Nach dem Login kopieren

Lösung: Wrapper-CTE mit Fensterfunktion

Um diesen Fehler zu beheben, besteht eine gängige Technik darin, einen Common Table Expression (CTE) zu erstellen, der die Fensterfunktionsberechnung kapselt. Indem die ursprüngliche Abfrage in einen CTE eingeschlossen wird, kann die nachfolgende Abfrage auf die Ergebnisse der Fensterfunktion zugreifen und sie in der WHERE-Klausel verwenden.

Eine überarbeitete Abfrage, die diese Lösung implementiert, würde wie folgt aussehen:

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
Nach dem Login kopieren

Durch die Verwendung dieser Methode steht die Ausgabe der Fensterfunktion zur Verwendung in der WHERE-Klausel zur Verfügung, sodass der Benutzer die Ergebnisse erfolgreich basierend auf den gewünschten Kriterien filtern kann.

Das obige ist der detaillierte Inhalt vonWarum kann ich ROW_NUMBER() nicht in einer WHERE-Klausel verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage