Requête SQL pour obtenir des numéros de ligne distincts avec DENSE_RANK()
En SQL, la recherche de valeurs uniques (distinctes) se fait généralement à l'aide de DISTINCT mot-clé. Cependant, lorsque vous devez afficher les numéros de ligne pour ces valeurs distinctes, l'utilisation de DISTINCT seule peut ne pas suffire.
Dans le code donné :
SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum FROM table WHERE fid = 64
Le mot-clé DISTINCT supprime les valeurs d'identifiant en double, mais la fonction ROW_NUMBER() attribue un numéro de ligne unique à chaque enregistrement du jeu de résultats. Ce n'est donc pas utile pour identifier des valeurs distinctes.
Pour obtenir le résultat souhaité, nous pouvons utiliser la fonction DENSE_RANK() à la place :
SELECT DISTINCT id, DENSE_RANK() OVER (ORDER BY id) AS RowNum FROM table WHERE fid = 64
La fonction DENSE_RANK() attribue un rang distinct à chaque valeur d'identification unique, sans tenir compte des éventuelles lacunes dans les numéros de ligne. Cela fournit les numéros de ligne uniques pour les valeurs distinctes dans l'ensemble de résultats.
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!