Mysql
 sql >> Base de données >  >> RDS >> Mysql

Lignes aléatoires SQL dans une grande table (avec clause where)

J'aimerais donner une réponse précise, mais j'aurais besoin d'aide pour comprendre votre processus de réflexion...

Vous commencez par écrire :

Mais vous continuez ensuite à écrire :

Pour moi, cette dernière spécification n'a guère de sens à la lumière de la première remarque.

À mon humble avis, ce que vous voulez vraiment, c'est que les utilisateurs aient le même nombre d'opportunités de voter pour chaque voiture. Ou plus précisément, de voter pour chaque voiture par rapport à chaque autre voiture.

Si vous supposez que les variables (voiture) sont indépendantes, vous devez alors compter le nombre de fois qu'un choix s'est présenté, plutôt que le nombre de fois où il a été voté, et ajuster votre processus de décision en conséquence. C'est un problème mathématique, ce n'est pas si moche, et ça peut ensuite être traduit en SQL pour le meilleur ou pour le pire -- j'oserais dire que ce sera probablement pire.

Si vous supposez, comme moi, qu'ils ne sont pas indépendants, vous devez également tenir compte des corrélations - et stocker le nombre de fois où ils se sont également rencontrés. Parce que, eh bien, il y a une chance infiniment mince que vous ne préfériez pas cette Mercedes plutôt que cette Tata, cette Xinkai ou cette AvtoVAZ. Mais étant donné le choix entre la même Mercedes, une BMW, une Porsche et une Ferrari, la décision pourrait ne pas être aussi tranchée.

En d'autres termes, votre spécification ne répond pas du tout au problème tel que vous l'avez présenté.

Je supplie actuellement d'être d'accord avec la réponse postée il y a deux heures :choisissez-les vraiment au hasard, et vous serez satisfait sans code supplémentaire...

En remarque, si vos identifiants n'ont vraiment pas de lacunes, générez quatre identifiants en php ou autre et récupérez-les à l'aide d'un in() déclaration. Vous ne serez pas plus efficace que cela.