94 votes

Equivalent du RowID d'Oracle dans SQL Server

Quel est l'équivalent du RowID d'Oracle dans SQL Server ?

0voto

barry austra Points 29

J'ai pris cet exemple à partir de l'exemple MS SQL et vous pouvez voir que l'@ID peut être interchangé avec un entier ou un varchar ou autre. C'est la même solution que je cherchais, donc je la partage. Profitez-en !

-- UPDATE statement with CTE references that are correctly matched.
DECLARE @x TABLE (ID int, Stad int, Value int, ison bit);
INSERT @x VALUES (1, 0, 10, 0), (2, 1, 20, 0), (6, 0, 40, 0), (4, 1, 50, 0), (5, 3, 60, 0), (9, 6, 20, 0), (7, 5, 10, 0), (8, 8, 220, 0);
DECLARE @Error int;
DECLARE @id int;

WITH cte AS (SELECT top 1 * FROM @x WHERE Stad=6)
UPDATE x -- cte is referenced by the alias.
SET ison=1, @id=x.ID
FROM cte AS x

SELECT *, @id as 'random' from @x
GO

0voto

Saurabh Gautam Points 21

Vous pouvez obtenir le ROWID en utilisant les méthodes indiquées ci-dessous :

Créer une nouvelle table avec un champ d'incrémentation automatique.

Utilisez la fonction analytique Row_Number pour obtenir la séquence en fonction de vos besoins. Je préfère cette méthode parce qu'elle est utile dans les situations où vous voulez obtenir le numéro de ligne de manière ascendante ou descendante pour un champ spécifique ou une combinaison de champs.

Sample:Row_Number() Over(Partition by Deptno order by sal desc)

L'exemple ci-dessus vous donnera le numéro de séquence basé sur le salaire le plus élevé de chaque département. La partition par est facultative et vous pouvez la supprimer selon vos besoins.

-1voto

Yuri Chernov Points 15

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X