sql >> Databasteknik >  >> RDS >> Mysql

Hur får man en slumpmässig rad för aktuell dag?

Använd ett frö för slumptalsgeneratorn baserat på det aktuella datumet:

ORDER BY RAND(20120714) LIMIT 1

Jag är också nyfiken på vad du menar med "annat" här:

Om du vill välja en annan slumpmässigt citat varje dag så ska du inte använda en enkel ORDER BY RAND(seed) . Detta kan returnera samma offert tre dagar i rad.

Om du vill undvika att detta händer kan du istället lagra vilken offert som väljs för varje dag och välja en slumpmässig offert bland de som inte har använts de senaste n dagarna. Naturligtvis, om du lagrar när en offert användes senast så finns det också en naturlig lösning på ditt ursprungliga problem:

  • Leta efter ett citat som användes senast idag.
  • Om det finns en så är det dagens citat.
  • Om inte, välj ett nytt citat för dagen från rader som inte har använts under de senaste n dagarna och uppdatera raden för att visa att det är dagens citat för idag.

OK, vad sägs om ett lite annorlunda tillvägagångssätt:

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

Nu behöver du ingen extra kolumn och du kommer inte att få upprepningar, förutom kanske när månaden ändras. Denna lösning förutsätter att du har minst 32 offerter att välja mellan.



  1. postgresql - lägg till boolesk kolumn till tabelluppsättningens standard

  2. Mysql vs sql express-server (HEX -> bigint och bigint -> HEX-konvertering)

  3. CakePHP - Söker 3 bord effektivt med JOIN

  4. Döda MySQL-fråga vid avbrytning av användare