Maison >base de données >tutoriel mysql >Comment attribuer des numéros de ligne à des valeurs distinctes dans SQL ?

Comment attribuer des numéros de ligne à des valeurs distinctes dans SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-29 20:52:16486parcourir

How to Assign Row Numbers to Distinct Values in SQL?

Numéros de lignes distincts en SQL à l'aide de Row_Number

Les requêtes distinctes en SQL sont utilisées pour récupérer des valeurs uniques à partir d'une colonne spécifiée. Cependant, il existe des scénarios dans lesquels il est souhaitable d'afficher non seulement des valeurs distinctes, mais également les numéros de ligne correspondants. Pour y parvenir, la fonction Row_Number peut être utilisée conjointement avec le mot-clé DISTINCT.

Dans l'exemple fourni, l'utilisateur a tenté de combiner DISTINCT avec Row_Number pour afficher des valeurs distinctes ainsi que des numéros de ligne :

SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64

Cependant, cette requête n'a généré que des valeurs distinctes, similaires à la requête suivante :

SELECT distinct id FROM table WHERE fid = 64

Pour résoudre ce problème, le La fonction DENSE_RANK peut être utilisée à la place de Row_Number. DENSE_RANK attribue des numéros de ligne consécutifs à des valeurs distinctes, quelles que soient les lacunes dans les données.

Voici la requête corrigée :

SELECT distinct id, DENSE_RANK() OVER (ORDER BY  id) AS RowNum
FROM table
WHERE fid = 64

Cette requête fournira le résultat souhaité : une liste de valeurs distinctes avec les numéros de ligne correspondants, comme prévu.

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!

Déclaration:
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