Een MySQL resultatenset willekeurig ordenen

Er zijn momenten waarop u een MySQL resultatenset willekeurig zou moeten ordenen, bijvoorbeeld wanneer u een aantal willekeurige winnaars kiest voor een prijsvraag. Deze post bekijkt hoe u dit zou doen en de volgende MySQL post zal kijken naar het “willekeurig” ordenen van gegevens over meerdere pagina’s.

Gebruik makend van de prijs trekking voorbeeld, laten we zeggen dat we een enquête uitgevoerd en waren van plan om een prijs te geven aan 10 van de mensen die de enquête ingevuld. Deze mensen moeten willekeurig worden gekozen. De tabel heet “survey” en we willen hun contactgegevens.

Om 10 records uit de tabel in willekeurige volgorde te selecteren, doet u het volgende:

SELECT first_name, last_name, email_address, phoneFROM surveyORDER BY RAND()LIMIT 10

De regel ORDER BY RAND() maakt de resultatenset willekeurig, en de regel LIMIT 10 geeft alleen de eerste 10 resultaten.

Het op deze manier willekeurig rangschikken van een resultatenverzameling is inefficiënt en zal traag zijn op grote resultatenverzamelingen, omdat het willekeurige getal op elke rij moet worden toegepast voordat deze wordt gesorteerd. Voor het kiezen van een winnaar of soortgelijke omstandigheden is het geweldig, maar het is niet zo nuttig als je “willekeurige” resultaten over meerdere pagina’s moet pagina’s.

Als je gegevens “willekeurig” moet pagina’s met behulp van RAND() is niet veel zin omdat dezelfde records op meerdere pagina’s zullen verschijnen, en je zult geen consistente dataset krijgen als je terug en vooruit bladert door dezelfde pagina’s. Ik zal bekijken hoe je dit kunt doen in de MySQL post van volgende week. Zorg ervoor dat je je abonneert op mijn RSS feed (details hieronder) zodat je het niet mist.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.