Maison > base de données > tutoriel mysql > Pourquoi ne puis-je pas utiliser ROW_NUMBER() dans une clause WHERE ?

Pourquoi ne puis-je pas utiliser ROW_NUMBER() dans une clause WHERE ?

Linda Hamilton
Libérer: 2024-12-16 18:37:11
original
747 Les gens l'ont consulté

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

Erreur rencontrée lors de l'utilisation de la fonction ROW_NUMBER() dans la clause WHERE

Une question s'est posée concernant l'utilisation de la fonction ROW_NUMBER() dans la clause WHERE clause. Un utilisateur a rencontré une erreur indiquant : "Les fonctions fenêtrées ne peuvent apparaître que dans les clauses SELECT ou ORDER BY" lors de la tentative de requête suivante :

SELECT employee_id
FROM v_employee
WHERE ROW_NUMBER() OVER (ORDER BY employee_id) > 0
ORDER BY employee_id
Copier après la connexion

Solution : Wrapper CTE avec fonction fenêtrée

Pour résoudre cette erreur, une technique courante consiste à créer une expression de table commune (CTE) qui encapsule le calcul de la fonction fenêtrée. En encapsulant la requête d'origine dans un CTE, la requête suivante peut accéder aux résultats de la fonction fenêtrée et les utiliser dans la clause WHERE.

Une requête révisée implémentant cette solution apparaîtrait comme suit :

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
Copier après la connexion

En employant cette méthode, la sortie de la fonction fenêtrée devient disponible pour être utilisée dans la clause WHERE, permettant à l'utilisateur de filtrer avec succès les résultats en fonction des critères souhaités.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal