sql >> Databasteknik >  >> RDS >> Mysql

SQL Slumpmässiga rader i en stor tabell (med where-sats)

Jag skulle gärna ge ett specifikt svar, men jag skulle behöva hjälp att förstå din tankeprocess...

Du börjar med att skriva:

Men du fortsätter sedan att skriva:

För mig är den sistnämnda specifikationen föga meningsfull i ljuset av den första anmärkningen.

Imho, vad du verkligen vill är att användarna ska ha samma mängd möjligheter att rösta på varje bil. Eller mer exakt, att rösta på varje bil jämfört med varje annan bil.

Om du antar att (bil)variablerna är oberoende, måste du hålla en räkning på hur många gånger ett val kom upp, snarare än hur många gånger det röstades fram, och justera din beslutsprocess därefter. Det är ett matematiskt problem, det är inte så fult, och det kan sedan översättas till SQL på gott och ont -- jag vågar mig på att det förmodligen kommer att bli värre.

Om du, som jag, antar att de inte är oberoende, måste du också redogöra för korrelationer - och lagra hur många gånger de kom på varandra också. För, ja, det finns en oändligt liten chans att du inte kommer att föredra denna Mercedes snarare än den där Tata, den där Xinkai eller den där AvtoVAZ. Men med ett val mellan samma Mercedes, en BMW, en Porsche och en Ferrari kanske beslutet inte är så tydligt.

Med andra ord, din specifikation svarar inte alls på problemet som du presenterade det.

Jag ber för närvarande om att hålla med om svaret som publicerades för två timmar sedan:välj dem verkligen slumpmässigt, och du kommer att vara nöjd utan extra kod...

Som en sidoanteckning, om dina ID verkligen inte har några luckor, generera fyra ID i php eller vad som helst och hämta dem med en in() påstående. Du blir inte effektivare än så.



  1. Kan inte lösa sorteringskonflikten mellan SQL_Latin1_General_CP1_CI_AS och Latin1_General_CI_AS i lika med operationen

  2. Prestanda överraskningar och antaganden :STÄLL IN NOCOUNT PÅ

  3. SqlServer:Inloggning misslyckades för användaren

  4. SQL CASE:Känn till och undvik 3 mindre kända problem