[T-SQL] ROW_NUMBER() OVER sans ORDER BY

Question bizarre et pourtant assez connue: comment numéroter avec ROW_NUMBER() sans effectuer de tri sur le résultat, ce qui peut être utile/souhaitable dans tout un tas de contextes.
MSDN vous dit bien que ROW_NUMBER() OVER attend un ORDER BY…

Bien sûr mais si vous placez une constante dans le ORDER BY, l’optimiseur comprend que vous voulez une simple numérotation des résultats sans tri.

SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 0) ) AS[Index]
FROM [MaTable]

Et voilà!

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s