Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter uma linha aleatória para o dia atual?


Use uma semente para o gerador de números aleatórios com base na data atual:
ORDER BY RAND(20120714) LIMIT 1

Também estou curioso sobre o que você quis dizer com "outro" aqui:

Se você quiser selecionar um diferente citação aleatória todos os dias, então você não deve usar um simples ORDER BY RAND(seed) . Isso pode retornar a mesma cotação três dias seguidos.

Se você quiser evitar que isso aconteça, você pode armazenar qual cotação é selecionada para cada dia e escolher uma cotação aleatória daquelas que não foram usadas nos últimos n dias. Claro, se você estiver armazenando quando uma cotação foi usada pela última vez, também há uma solução natural para seu problema original:
  • Procure uma cotação que foi usada pela última vez hoje.
  • Se houver uma, essa é a citação do dia.
  • Caso contrário, selecione uma nova cotação do dia nas linhas que não foram usadas nos últimos n dias e atualize a linha para mostrar que é a cotação do dia para hoje.

OK, que tal uma abordagem um pouco diferente:
ORDER BY RAND(201207) LIMIT 14, 1
--            yyyymm        dd

Agora você não precisa de uma coluna extra e não terá repetições, exceto talvez quando o mês mudar. Esta solução pressupõe que você tenha pelo menos 32 cotações para escolher.