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

Comment puis-je utiliser ROW_NUMBER() dans une clause WHERE ?

Susan Sarandon
Libérer: 2024-12-17 05:36:24
original
138 Les gens l'ont consulté

How Can I Use ROW_NUMBER() in a WHERE Clause?

Utilisation de la fonction ROW_NUMBER() dans la clause WHERE : surmonter les restrictions des fonctions fenêtrées

Les fonctions fenêtrées, telles que ROW_NUMBER(), permettent d'obtenir des données puissantes transformations au sein des ensembles de résultats. Cependant, leur utilisation est soumise à des contraintes spécifiques, dont l'une est leur exclusion de la clause WHERE.

Comme l'illustre la requête rencontrée par l'utilisateur, tenter d'utiliser ROW_NUMBER() dans la clause WHERE entraîne le message d'erreur : "Les fonctions fenêtrées ne peuvent apparaître que dans les clauses SELECT ou ORDER BY."

Pour remédier à cette limitation, une technique peut être utilisée qui consiste à encapsuler la requête d'origine dans une table commune Expression (CTE), permettant l'inclusion de fonctions fenêtrées au sein de la requête CTE.

Voici comment implémenter cette solution :

  1. Créer un CTE : Encapsuler la requête d'origine dans un CTE, en attribuant un alias (par exemple, MyCte) à it.
  2. Incluez ROW_NUMBER() dans le CTE : Dans le CTE, incluez la fonction ROW_NUMBER() avec les autres colonnes souhaitées.
  3. Sélectionnez parmi les CTE : Interrogez le CTE pour le résultat souhaité, en utilisant les résultats ROW_NUMBER() dans WHERE

La requête révisée ressemblerait à ceci :

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 encapsulant la requête d'origine dans un CTE, la fonction fenêtrée ROW_NUMBER() peut désormais être utilisée dans le WHERE clause, permettant le filtrage des résultats en fonction de ses valeurs.

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