Yhteenveto: Tässä opetusohjelmassa opit erilaisia tekniikoita satunnaisten tietueiden valitsemiseksi tietokantataulukosta MySQL:ssä.
Joskus joudut valitsemaan satunnaisia tietueita taulukosta, esimerkiksi:
- Valitsemalla joitakin satunnaisia viestejä blogista ja näyttämällä ne sivupalkissa.
- Valitaan satunnainen sitaatti ”päivän sitaatti”-widgetin näyttämistä varten.
- Valitaan satunnaisia kuvia galleriasta ja käytetään esillä olevina kuvina.
MySQL:ssä valitaan satunnaisia tietueita ORDER BY RAND() -menetelmällä
MySQL:ssä ei ole sisäänrakennettua lauseketta, jonka avulla voidaan valita satunnaisia rivejä taulukosta. Tätä varten käytetään RAND()
-funktiota.
Seuraavalla kyselyllä valitaan satunnainen rivi tietokantataulusta:
Code language: SQL (Structured Query Language) (sql)
Tutkitaan kyselyä tarkemmin.
- Funktio
RAND()
tuottaa satunnaisen arvon jokaiselle taulukon riville. - Lauseke
ORDER BY
lajittelee kaikki taulukon rivit funktionRAND()
tuottaman satunnaisluvun mukaan. - Lauseke
LIMIT
poimii satunnaisesti lajitellun tulosjoukon ensimmäisen rivin.
Jos haluat valita N
satunnaisia tietueita tietokantataulukosta, sinun on muutettava LIMIT
-lauseketta seuraavasti:
Code language: SQL (Structured Query Language) (sql)
Katso seuraava customers
taulukko esimerkkitietokannasta.
Seuraavassa esimerkissä valitaan viisi satunnaista asiakasta customers
-taulusta:
Code language: SQL (Structured Query Language) (sql)
Kokeile
Huomaa, että saatat saada erilaisen tulosjoukon, koska kyseessä on satunnaistaminen.
Tämä tekniikka toimii hyvin pienessä taulussa. Se on kuitenkin hidas suurelle taululle, koska MySQL joutuu lajittelemaan koko taulukon valitakseen satunnaiset.
Kyselyn nopeus riippuu myös taulukon rivien määrästä. Mitä enemmän rivejä taulukossa on, sitä enemmän aikaa kuluu satunnaisluvun tuottamiseen jokaiselle riville.
MySQL valitsee satunnaistietueet INNER JOIN -lausekkeella
Tämä tekniikka edellyttää, että taulussa on automaattisesti inkrementoituva ensisijainen avainkenttä ja että järjestyksessä ei ole aukkoa.
Seuraava kysely tuottaa satunnaisluvun ensisijaisen avainsarakkeen perusteella:
Code language: SQL (Structured Query Language) (sql)
Voidaan liittää taulukkoon yllä olevan kyselyn palauttama tulosjoukko seuraavasti:
Code language: SQL (Structured Query Language) (sql)
Tämän tekniikan avulla kysely on suoritettava useita kertoja, jotta saadaan useampi kuin yksi satunnainen rivi, sillä jos rajaa kasvatetaan, kysely antaa vain peräkkäisiä rivejä, jotka lähtevät liikkeelle satunnaisesti valitusta rivistä.
Seuraava kysely palauttaa satunnaisen asiakkaan customers
-taulusta.
Code language: SQL (Structured Query Language) (sql)
Kokeile
MySQL valitse satunnaisia tietueita muuttujien avulla
Tapauksessa, jossa taulukossa on id
-sarake, jonka arvot sijoittuvat välille 1..N
eikä välissä ole aukkoa, voit käyttää seuraavaa tekniikkaa:
- Valitaan ensin satunnaisluvut väliltä 1..N.
- Toiseksi valitse tietueet satunnaislukujen perusteella.
Seuraavan lausekkeen avulla tämä onnistuu:
Code language: SQL (Structured Query Language) (sql)
Huomaa, että käyttäjän määrittelemät muuttujat ovat yhteyskohtaisia. Se tarkoittaa, että tätä tekniikkaa ei voi käyttää yhteyksien yhdistämisen kanssa. Lisäksi ensisijaisen avaimen on oltava kokonaislukutyyppinen ja sen arvojen on oltava järjestyksessä ilman aukkoja.
Tässä opetusohjelmassa olemme näyttäneet sinulle useita tekniikoita satunnaisten tietueiden valitsemiseksi taulukosta.
- Oliko tästä opetusohjelmasta apua?
- KylläEi