Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere una riga casuale per il giorno corrente?

Usa un seme per il generatore di numeri casuali in base alla data corrente:

ORDER BY RAND(20120714) LIMIT 1

Sono anche curioso di sapere cosa intendi per "altro" qui:

Se vuoi selezionare un diverso citazione casuale ogni giorno, quindi non dovresti usare un semplice ORDER BY RAND(seed) . Questo potrebbe restituire la stessa citazione per tre giorni di seguito.

Se vuoi evitare che ciò accada, puoi invece memorizzare quale preventivo è selezionato per ogni giorno e scegliere un preventivo casuale tra quelli che non sono stati utilizzati negli ultimi n giorni. Naturalmente, se stai memorizzando quando un preventivo è stato utilizzato l'ultima volta, c'è anche una soluzione naturale al tuo problema originale:

  • Cerca una citazione utilizzata l'ultima volta oggi.
  • Se ce n'è una, quella è la citazione del giorno.
  • In caso contrario, seleziona una nuova quotazione del giorno dalle righe che non sono state utilizzate negli ultimi n giorni e aggiorna la riga per mostrare che è la quotazione del giorno per oggi.

OK, che ne dici di un approccio leggermente diverso:

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

Ora non hai bisogno di una colonna in più e non otterrai ripetizioni, tranne forse quando cambia il mese. Questa soluzione presuppone che tu abbia almeno 32 virgolette tra cui scegliere.