12
votes

Inclure le numéro de ligne dans le résultat de la requête (SQL Server)

Je pense que chaque ligne de SQL Server reçoit un numéro unique. Comment puis-je inclure cela dans mes résultats de requête SQL?


1 commentaires

Généralement, le premier champ de la table - éventuellement nommé «ID» ou quelque chose comme ça - est la clé primaire, qui est généralement un entier qui augmente de 1 pour chaque nouvelle ligne ... donc c'est comme un nombre de lignes. Mais nous devrions savoir comment la table est organisée pour dire s'il existe un champ d'identification et, dans l'affirmative, comment le récupérer.


3 Réponses :


36
votes

Si vous vous référez au numéro de ligne fourni par Gestion Studio lorsque vous exécutez une requête, il n'y a aucun moyen de l'obtenir car il n'existe pas vraiment. Management Studio génère cela à la volée. Vous pouvez toutefois recréer un numéro séquentiel à l'aide du Row_Number Fonction de classement si vous utilisez SQL Server 2005 ou ultérieure. Remarque Vous ne devez jamais supposer que la base de données renvoie les lignes dans une commande spécifiée, sauf si vous incluez une commande par déclaration. Votre requête pourrait donc ressembler à:

Select ....
    , Row_Number() Over ( Order By T.SomeColumn ) As Num
From Table As T
Order By T.SomeColumn


4 commentaires

Agréable :). J'ai fait Row_Number sur ma colonne clé principale. De cette façon, j'ai eu un numéro séquentiel de 1 sans aucune lacune (même si la ligne est supprimée).


Comment pouvons-nous atteindre la même chose dans mysql


@Ashokkumarganesan - de même manière: Dev.mysql.com/ DOC / REFMAN / 8.0 / EN / ...


Ouais j'ai essayé d'acheter quelque part qu'il ne marche pas pour moi et je suis parti avec offset



3
votes

Le caractère unique dans votre résultat sera toujours votre clé primaire.

mais il y a quelque chose appelé la fonction Row_Number pouvant être utilisée comme identité unique de ligne dans un résultat spécifique. P>

SELECT zip,city,state,latitude,longitude,timezone,dst,
          ROW_NUMBER() OVER (ORDER BY zip) AS num
          FROM dbo.zipcode;


0 commentaires

-1
votes

Je pense que vous devriez utiliser celui-ci ....

dcount ("Nom de colonne", 'natal_name', 'Nom de colonne <=' & '& [Nom de colonne]) comme SR


1 commentaires

dcount () n'est pas une fonction dans SQL Server.