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

Jak uzyskać losowy wiersz na bieżący dzień?

Użyj zalążka generatora liczb losowych na podstawie aktualnej daty:

ORDER BY RAND(20120714) LIMIT 1

Jestem też ciekaw, co miałeś na myśli mówiąc „inne” tutaj:

Jeśli chcesz wybrać inny losowy cytat każdego dnia, nie powinieneś używać prostego ORDER BY RAND(seed) . To może zwrócić ten sam cytat trzy dni z rzędu.

Jeśli chcesz tego uniknąć, możesz zamiast tego zapisać, który cytat jest wybrany na każdy dzień i wybrać losowy cytat spośród tych, które nie były używane w ciągu ostatnich n dni. Oczywiście, jeśli przechowujesz datę ostatniego użycia cytatu, istnieje również naturalne rozwiązanie pierwotnego problemu:

  • Poszukaj cytatu, który był ostatnio używany dzisiaj.
  • Jeśli taki jest, to jest to cytat dnia.
  • Jeśli nie, wybierz nowy cytat dnia z wierszy, które nie były używane w ciągu ostatnich n dni, i zaktualizuj wiersz, aby pokazać, że jest to cytat dnia na dzisiaj.

OK, co powiesz na nieco inne podejście:

ORDER BY RAND(201207) LIMIT 14, 1
--            yyyymm        dd

Teraz nie potrzebujesz dodatkowej kolumny i nie będziesz otrzymywać powtórzeń, chyba że zmieni się miesiąc. To rozwiązanie zakłada, że ​​masz do wyboru co najmniej 32 cytaty.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obliczanie Z-Score dla każdego wiersza w MySQL? (prosty)

  2. Mysql Dołącz i SUM

  3. Jak działa funkcja WEIGHT_STRING() w MySQL

  4. Czy powinienem używać backticków, czy nie, podczas ucieczki słów kluczowych w MySQL?

  5. Pobierz wszystkie dzieci według identyfikatora rodzica i klauzuli gdzie w mysql