sql >> Database >  >> RDS >> Mysql

SQL Willekeurige rijen in een grote tabel (met where-clausule)

Ik zou graag een specifiek antwoord geven, maar ik heb hulp nodig om uw denkproces te begrijpen...

Je begint met te schrijven:

Maar dan ga je verder met schrijven:

Voor mij heeft de laatste specificatie weinig zin in het licht van de eerste opmerking.

Imho, wat je echt wilt, is dat gebruikers hetzelfde aantal mogelijkheden hebben om op elke auto te stemmen. Of beter gezegd, om op elke auto te stemmen in vergelijking met elke andere auto.

Als je ervan uitgaat dat de (auto)variabelen onafhankelijk zijn, dan moet je tellen hoe vaak een keuze is gevallen, in plaats van hoe vaak er op is gestemd, en je beslissingsproces daarop aanpassen. Het is een wiskundig probleem, het is niet zo lelijk, en het kan dan ten goede of ten kwade in SQL worden vertaald - ik durf te wedden dat het waarschijnlijk erger zal zijn.

Als je, zoals ik, aanneemt dat ze niet onafhankelijk zijn, moet je ook rekening houden met correlaties -- en opslaan hoe vaak ze ook met elkaar op de proppen kwamen. Want, nou ja, de kans is oneindig klein dat je niet de voorkeur geeft aan deze Mercedes boven die Tata, die Xinkai of die AvtoVAZ. Maar gezien de keuze tussen dezelfde Mercedes, een BMW, een Porsche en een Ferrari, is de beslissing misschien niet zo duidelijk.

Met andere woorden, uw specificatie geeft geen antwoord op het probleem zoals u het voorstelde.

Ik smeek momenteel om het eens te zijn met het antwoord dat twee uur geleden is gepost:kies ze echt willekeurig en je zult tevreden zijn zonder extra code...

Even terzijde, als je id's echt geen gaten hebben, genereer dan vier id's in php of wat dan ook en haal ze op met een in() uitspraak. Efficiënter wordt het niet.



  1. mysql-query SHOW COLUMNS FROM tabel zoals 'colmunname':questions

  2. MySQL multiple WHERE AND/OR condition logic

  3. Oracle:hoe twee datums af te trekken en minuten van het resultaat te krijgen

  4. Negatieve waarden converteren van FROM_UNIXTIME