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?
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
SELECT TOP 1 * FROM Employee ORDER BY newid()
Vous devez utiliser newid () pour qu'il soit évalué une fois par ligne.
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