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
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
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!