Utilisez une graine pour le générateur de nombres aléatoires en fonction de la date actuelle :
ORDER BY RAND(20120714) LIMIT 1
Je suis également curieux de savoir ce que vous entendez par "autre" ici :
Si vous souhaitez sélectionner un différent citation aléatoire chaque jour, vous ne devriez pas utiliser un simple ORDER BY RAND(seed)
. Cela pourrait renvoyer le même devis trois jours de suite.
Si vous voulez éviter que cela ne se produise, vous pouvez à la place stocker le devis sélectionné pour chaque jour et choisir un devis aléatoire parmi ceux qui n'ont pas été utilisés au cours des n derniers jours. Bien sûr, si vous stockez la date de la dernière utilisation d'un devis, il existe également une solution naturelle à votre problème d'origine :
- Recherchez un devis qui a été utilisé pour la dernière fois aujourd'hui.
- S'il y en a une, c'est la citation du jour.
- Si ce n'est pas le cas, sélectionnez une nouvelle citation du jour parmi les lignes qui n'ont pas été utilisées au cours des n derniers jours, et mettez à jour la ligne pour indiquer qu'il s'agit de la citation du jour d'aujourd'hui.
OK, que diriez-vous d'une approche légèrement différente :
ORDER BY RAND(201207) LIMIT 14, 1
-- yyyymm dd
Maintenant, vous n'avez plus besoin d'une colonne supplémentaire et vous n'obtiendrez pas de répétitions, sauf peut-être lorsque le mois change. Cette solution suppose que vous avez au moins 32 devis parmi lesquels choisir.