Mysql
 sql >> Base de données >  >> RDS >> Mysql

ORDER BY RAND() semble être moins qu'aléatoire

RAND() n'est exécuté qu'une seule fois par requête. Vous pouvez le vérifier en regardant le jeu de résultats.

Si vous essayez d'obtenir une commande aléatoire, vous devez utiliser soit NEWID() ou CHECKSUM(NEWID()) .

WITH T AS ( -- example using RAND()
  SELECT 'Me' Name UNION SELECT 'You' UNION SELECT 'Another'
)
SELECT Name, RAND()
FROM T;

WITH T AS ( -- example using just NEWID()
  SELECT 'Me' Name UNION SELECT 'You' UNION SELECT 'Another'
)
SELECT Name, NEWID()
FROM T;

WITH T AS ( -- example getting the CHECKSUM() of NEWID()
  SELECT 'Me' Name UNION SELECT 'You' UNION SELECT 'Another'
)
SELECT Name, CHECKSUM(NEWID())
FROM T;