sql >> Database teknologi >  >> RDS >> Mysql

ORDER BY RAND() ser ud til at være mindre end tilfældig

RAND() udføres kun én gang pr. forespørgsel. Du kan bekræfte dette ved at se på resultatsættet.

Hvis du forsøger at få en randomiseret rækkefølge, skal du bruge enten NEWID() eller 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;


  1. Postgres-funktion returnerer tabel returnerer ikke data i kolonner

  2. Indsæt flere rækker UDEN at gentage INSERT INTO ...-delen af ​​sætningen?

  3. Uddrag måneden fra en dato i PostgreSQL

  4. MySQL:Indsæt i flere tabeller i samme forespørgsel med BEGIN&COMMIT