lut 01

Jak wybrać losowy rekord z bazy?

Tag: Bazy danych,MySQL,PostgresqlTI @ 01-02-2008 23:27
Bookmark and Share

MySQL

SELECT author, quote FROM quotes ORDER BY RAND() LIMIT 1;

Wybiera jeden losowy rekord z tabeli quotes.

Postgresql

SELECT id, komentarz FROM (SELECT *, RANDOM() FROM komentarze ORDER BY 4) tmp_komentarze LIMIT 10;

Wybiera 10 losowych rekordów z tabeli. Liczba 4 określa ilość kolumn w tabeli +1.

4 komentarzy do “Jak wybrać losowy rekord z bazy?”

  1. Chemikk

    A może zrobić to na poziomie PHP? Czy jakiegokolwiek innego języka skryptowego a nie obciążać bazę?

    http://www.chemikk.pl/wpis/44/Losowy%20rekord%20tabeli%20z%20MySQL

  2. TI

    Oczywiście że można ale po co obciążać program i zasoby które wykorzystuje skoro może zrobić to za niego baza danych bardziej wydajnie?

  3. Chemikk

    Ja wiem czy tak wydajniej :)

    SELECT author, quote FROM quotes ORDER BY RAND() LIMIT 1;

    To zapytanie najpierw sortuje wszystkie a potem wybiera 1 z nich, więc to nie jest aż tak wydajne ;)

  4. slammer

    Proponuję zapoznać się z problemami wydajnościowymi. Twoje rozwiązanie jest dobre, ale przy niewielkiej ilości danych.

    http://blog.desmart.com/2008/03/12/sposob-na-wyciagniecie-losowego-rekordu-z-tablicy-mysql/

Zostaw komentarz