web-dev-qa-db-fra.com

Comment utiliser le mot clé LIMIT dans SQL Server 2005?

J'ai trouvé un moyen de sélectionner des lignes aléatoires d'une table dans this post . Une suggestion est d'utiliser la requête suivante:

SELECT * FROM employee ORDER BY Rand() LIMIT 1

Mais lorsque j'exécute cette requête dans MS SQL 2005, le message d'erreur suivant s'affiche:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'LIMIT'.

Quelqu'un peut-il me dire où je me trompe? MS SQL ne supporte-t-il pas LIMIT? Si oui, alors comment puis-je faire cela? 

25
user11445

Si vous examinez l'instruction SELECT dans la documentation en ligne de SQL Server, vous verrez que vous pouvez limiter le jeu de résultats à l'aide du mot clé TOP.

SELECT TOP 1 * FROM employee
44
Frederik Gheysels
SELECT TOP 1 * FROM Employee ORDER BY newid()

Vous devez utiliser newid () pour qu'il soit évalué une fois par ligne. 

5
Jonas Lincoln

J'utilise celui-ci assez simple (SQL2005) pour limiter le nombre de lignes renvoyées, ce qui fonctionnera également avec une valeur fournie par un paramètre de procédure stockée.

DECLARE @Limit int
SET @Limit = 10
SELECT TOP (@Limit) Col1, Col2 FROM SomeTable
0
Stuntbeaver