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

Linhas SQL aleatórias em uma tabela grande (com cláusula where)


Eu adoraria dar uma resposta específica, mas preciso de ajuda para entender seu processo de pensamento...

Você começa escrevendo:

Mas você continua escrevendo:

Para mim, a última especificação faz pouco sentido à luz da primeira observação.

Imho, o que você realmente quer é que os usuários tenham a mesma quantidade de oportunidades de votar em cada carro. Ou mais precisamente, votar em cada carro comparado a cada outro carro.

Se você assumir que as variáveis ​​(carro) são independentes, então você precisa manter uma contagem de quantas vezes uma escolha surgiu, em vez de quantas vezes ela foi votada, e ajustar seu processo de decisão de acordo. É um problema de matemática, não é tão feio, e pode então ser traduzido em SQL para melhor ou pior -- eu arrisco que provavelmente será pior.

Se você assume, como eu, que eles não são independentes, você também precisa levar em conta as correlações -- e armazenar quantas vezes eles surgiram um com o outro também. Porque, bem, há uma chance infinitamente pequena de que você não prefira este Mercedes ao invés daquele Tata, aquele Xinkai ou aquele AvtoVAZ. Mas dada a escolha entre o mesmo Mercedes, BMW, Porsche e Ferrari, a decisão pode não ser tão clara.

Em outras palavras, sua especificação não responde ao problema como você a apresentou.

Atualmente, estou implorando para concordar com a resposta postada há duas horas:escolha-as realmente aleatoriamente e você ficará satisfeito sem código extra ...

Como uma observação lateral, se seus ids realmente não tiverem lacunas, gere quatro ids em php ou qualquer outra coisa e busque-os usando um in() declaração. Você não vai ficar mais eficiente do que isso.