Récupérer le dernier enregistrement de la table SQL Server
Voici mon problème: j'ai une base de données SQL Server appelé emp
. Il a une employee
table (avec userid int
colonne). J'ai besoin de récupérer le dernier enregistrement de la userid
dans employee
table avec incrément de valeur id utilisateur + 1. Au moment où je l'ai fait sur mon interface graphique. Alors, comment puis-je écrire une requête sql?
OriginalL'auteur kaumadee wijewantha | 2011-01-27
Vous devez vous connecter pour publier un commentaire.
De retourner le dossier avec le plus de nom d'utilisateur, vous pouvez le faire:
ou...
Si votre plan est de puis incrémenter le nom d'utilisateur manuellement et insérez un nouveau record avec cette nouvelle ID, je le recommande à l'encontre de le faire - ce si 2 processus d'essayer de le faire en même temps? Au lieu de cela, utilisez une colonne d'IDENTITÉ en tant que nom d'utilisateur et de laisser l'incrémentation d'être gérées automatiquement pour vous
OriginalL'auteur AdaTheDev
Vous ne devriez pas être incrémenter manuellement l'identifiant de la colonne, une colonne d'IDENTITÉ au lieu. Qui va automatiquement ajouter 1 pour vous pour chaque nouvelle ligne.
Si vous avez vraiment vraiment avoir à sélectionner la meilleure userid il est très simple requête:
[Modifier]
En fonction de vos commentaires, vous devez utiliser le
SELECT MAX(UserId) + 1 FROM Employees
requête. Mais sachez que cela ne garantit pas le numéro de l'ID. Normalement, vous ne serait pas afficher une valeur d'Id jusqu'à ce que, après le record a été enregistré dans la base de données.Si vous avez besoin de montrer ce que l'Id du nouvel employé sera avant vous avez ajouté l'employé ensuite, utilisez la requête ci-dessus:
SELECT MAX(UserId) + 1 FROM Employees
. Mais il y a une chance que ce ne sera pas le numéro d'identification lorsque le nouvel employé est en fait enregistré.OriginalL'auteur JK.
Cela vous donnera le dernier enregistrement inséré, Si vous n'avez pas de colonne d'Identité.
Si vous avez défini l'identité que vous pouvez utiliser la suite.
Il y a vraiment pas besoin d'un curseur (gros gros rendement tueur!!) dans cette situation.....
Ainsi, vous obtenez le dernier enregistrement inséré si vous n'avez pas de code d'auto-incrémentation. Essayez de Remplacer la table et et voir le résultat
Ouais, je pense que marc s est un peu harch! - Les curseurs sont une performance killer pour ligne par ligne d'opérations, mais dans ce cas, il ne reçoit que le dernier enregistrement
OriginalL'auteur ashish.chotalia
D'avoir le nouveau nom d'utilisateur avant de l'enregistrer, de créer un NextId table.
Avant l'insertion de l'utilisateur, obtenir la nouvelle valeur de NextId:
Puis mettre à jour le NextID table:
Et ensuite utiliser cette valeur dans votre création d'utilisateur code
Vous pouvez obtenir des lacunes, il y a de plus compliqué méthodes pour les éviter; mais je pense que cela va faire
Est-ce la raison pour au moins 1?
OriginalL'auteur Karel