Použijte zdroj pro generátor náhodných čísel na základě aktuálního data:
ORDER BY RAND(20120714) LIMIT 1
Také by mě zajímalo, co jste zde myslel tím "jiné":
Pokud chcete vybrat jiný každý den náhodnou citaci, pak byste neměli používat jednoduchý ORDER BY RAND(seed)
. To by mohlo vrátit stejnou nabídku tři dny po sobě.
Pokud se tomu chcete vyhnout, můžete místo toho uložit, která nabídka je vybrána pro každý den, a vybrat náhodnou nabídku z těch, které nebyly v posledních n dnech použity. Samozřejmě, pokud ukládáte, kdy byla nabídka naposledy použita, pak existuje také přirozené řešení vašeho původního problému:
- Hledejte nabídku, která byla naposledy použita dnes.
- Pokud existuje, je to citát dne.
- Pokud ne, vyberte novou nabídku dne z řádků, které nebyly v posledních n dnech použity, a aktualizujte řádek tak, aby ukazoval, že se jedná o nabídku dne pro dnešek.
Dobře, co takhle trochu jiný přístup:
ORDER BY RAND(201207) LIMIT 14, 1
-- yyyymm dd
Nyní nepotřebujete další sloupec a nebudete dostávat opakování, snad kromě případů, kdy se změní měsíc. Toto řešení předpokládá, že máte na výběr alespoň 32 nabídek.