tutorial - tsql code




Renvoie les lignes dans un ordre aléatoire (4)

C'est ce dont vous avez besoin:

SELECT * FROM nom_table ORDER BY RAND () LIMIT 1

Cette question a déjà une réponse ici:

Est-il possible d'écrire une requête SQL qui renvoie des lignes de table dans un ordre aléatoire chaque fois que la requête est exécutée?


C'est la solution la plus simple:

SELECT quote FROM quotes ORDER BY RAND() 

Bien que ce ne soit pas le plus efficace. Celui-ci est une meilleure solution.


Pour être efficace et aléatoire, il peut être préférable d'avoir deux requêtes différentes.

Quelque chose comme...

SELECT table_id FROM table

Ensuite, dans la langue de votre choix, choisissez un identifiant aléatoire, puis extrayez les données de cette ligne.

SELECT * FROM table WHERE id_table = $ rand_id

Mais ce n'est pas vraiment une bonne idée si vous prévoyez avoir beaucoup de lignes dans la table. Ce serait mieux si vous mettez une sorte de limite sur ce que vous choisissez au hasard. Pour les publications, choisissez peut-être aléatoirement parmi les articles publiés au cours de la dernière année.


Voici un exemple ( source ):

SET @randomId = Cast(((@maxValue + 1) - @minValue) * Rand() + @minValue AS tinyint);






tsql