sql >> Database >  >> RDS >> Mysql

ORDER BY RAND() lijkt minder dan willekeurig te zijn

RAND() wordt slechts één keer per zoekopdracht uitgevoerd. U kunt dit verifiëren door naar de resultatenset te kijken.

Als u een willekeurige volgorde probeert te krijgen, moet u NEWID() gebruiken of 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. Hoe te voorkomen dat PHP lege rijen/velden toevoegt aan de MYSQL-database

  2. Hoeveel databasetabelkolommen zijn te veel?

  3. Tabelkolommen opnieuw ordenen in Oracle

  4. Hoe de JJJJMMDD-datum te valideren die is opgegeven als parameter PL/SQL