MySQL-tulosjoukon satunnainen järjestäminen

On tilanteita, joissa saatat tarvita MySQL-tulosjoukon satunnaista järjestämistä, esimerkiksi kun valitset satunnaisesti joitakin voittajia arvontaan. Tässä postauksessa tarkastellaan, miten tämä tehdään, ja seuraavassa MySQL-postauksessa tarkastellaan tietojen “satunnaista” järjestämistä useiden sivujen välillä.

Käytettäessä esimerkkiä palkintojen arvonnasta sanotaan, että teimme kyselytutkimuksen ja aioimme antaa palkinnon 10:lle kyselyyn vastanneelle henkilölle. Nämä ihmiset on tarkoitus valita satunnaisesti. Taulukon nimi on “kysely”, ja haluamme heidän yhteystietonsa.

Voidaksemme valita 10 tietuetta taulukosta satunnaisessa järjestyksessä tee seuraavasti:

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

Rivi ORDER BY RAND() tekee tulossarjasta satunnaisen, ja rivi LIMIT 10 palauttaa vain 10 ensimmäistä tulosta.

Tulosjoukon järjestäminen satunnaisesti tällä tavalla on tehotonta ja hidasta suurilla tulosjoukoilla, koska satunnaislukua on sovellettava jokaiseen riviin ennen lajittelua. Voittajan valitsemiseen tai vastaaviin tilanteisiin se on hyvä, mutta se ei ole kovin hyödyllinen, jos sinun täytyy sivuttaa “satunnaisia” tuloksia useilla sivuilla.

Jos sinun täytyy sivuttaa tietoja “satunnaisesti”, RAND()-funktiosta ei ole paljoa hyötyä, koska samat tietueet esiintyvät useilla sivuilla, etkä saa johdonmukaista tietokokonaisuutta sivuttaessasi samoja sivuja taaksepäin ja eteenpäin. Tarkastelen tämän tekemistä ensi viikon MySQL-postauksessa. Muista tilata RSS-syötteeni (tiedot alla), jotta et jää paitsi.

Vastaa

Sähköpostiosoitettasi ei julkaista.