Maison > base de données > tutoriel mysql > Comment DISTINCT interagit-il avec ROW_NUMBER() et comment puis-je obtenir des numéros de ligne uniques dans SQL ?

Comment DISTINCT interagit-il avec ROW_NUMBER() et comment puis-je obtenir des numéros de ligne uniques dans SQL ?

Patricia Arquette
Libérer: 2024-12-26 03:13:09
original
429 Les gens l'ont consulté

How Does DISTINCT Interact with ROW_NUMBER() and How Can I Get Unique Row Numbers in SQL?

Comprendre le mot clé DISTINCT et la fonction ROW_NUMBER()

Lorsque vous travaillez avec des données en SQL, il devient souvent nécessaire de récupérer uniquement les lignes uniques d'une table. Le mot-clé DISTINCT est généralement utilisé à cette fin, car il élimine les lignes en double du jeu de résultats. Cependant, lorsqu'il est combiné avec la fonction ROW_NUMBER(), le mot-clé DISTINCT peut se comporter différemment.

Fonction ROW_NUMBER() et valeurs distinctes

La fonction ROW_NUMBER() attribue un numéro séquentiel unique pour chaque ligne d'un tableau. Par défaut, les lignes sont classées selon leur position dans le tableau. Cependant, vous pouvez spécifier un ordre de tri différent à l'aide de la clause ORDER BY.

Dans la requête fournie, la fonction ROW_NUMBER() est utilisée avec le mot-clé DISTINCT :

SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64
Copier après la connexion

Cette requête vise pour afficher tous les numéros de ligne des valeurs uniques dans la colonne id. Cependant, il ne renvoie que les valeurs distinctes sans afficher les numéros de ligne.

Solution utilisant la fonction DENSE_RANK()

Pour obtenir le résultat souhaité, vous pouvez utiliser DENSE_RANK( ) au lieu de ROW_NUMBER(). La fonction DENSE_RANK() attribue des numéros séquentiels uniques à chaque valeur distincte d'un tableau, quel que soit l'ordre des lignes.

La requête corrigée utilisant DENSE_RANK() :

SELECT DISTINCT id, DENSE_RANK() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64
Copier après la connexion

Cette requête renverra les valeurs distinctes dans la colonne id ainsi que leurs numéros de ligne correspondants, répondant ainsi à l'exigence d'origine.

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