Mysql
 sql >> Baza danych >  >> RDS >> Mysql

ORDER BY RAND() wydaje się być mniej niż losowy

RAND() jest wykonywane tylko raz na zapytanie. Możesz to sprawdzić, patrząc na zestaw wyników.

Jeśli próbujesz uzyskać losowe zamówienie, powinieneś użyć NEWID() lub 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć globalne wyszukiwanie w mojej witrynie

  2. Jak zrobić time_to_minute w Mysql?

  3. Błąd w tworzeniu tabeli

  4. MySQL wstaw wiersz przy zduplikowanym kluczu zaktualizuj wiele kolumn

  5. Jak pominąć puste dane w MySQL?