BAZA WIEDZY
KURSY
Bazy danych w PHP
Kurs AdvancedAJAX
Kurs ASP
Kurs ASP.NET
Kurs C++
Kurs CSS
Kurs HTML
Kurs HTML drugi
Kurs JavaScript
Kurs MySQL
Kurs PHP
Kurs RSS
Kurs XHTML
Obiekty DOM
MANUALE
CSS1 - W3C
DOM - w budowie
PHP 2005
PHP 2006
Wyrażenia regularne
SHOUTBOX
STAT
Online: 21 | UU: 406
[MySQL] Jak pobrać z bazy danych losowe rekordy?
15 maj 2007

Aby posortować rekordy z bazy danych w sposób losowy należy użyć bardzo prostego sposobu, a mianowicie wykorzystać wbudowaną w język MySql funkcję RAND().

Przykład:

Kod: mysql

SELECT * FROM przykladowa_tabela ORDER BY RAND() LIMIT 5

W przedstawionym przykładzie zapytaniem SELECT pobieramy zawartość  tabeli: przykładowa_tabela. Poleceniem ORDER BY RAND() pobieramy rekordy w losowej kolejności, natomiast poleceniem LIMIT określamy, że interesuje nas wylosowanie 5 rekordów. Proste:)

Opracowanie: Adam Suchowski

Dodaj komentarz









Komentarze
6 odpowiedzi
26 październik 2011, godz. 9:07

lolbox.pl

a jakaś ciekawsza alternatywa?

16 wrzesień 2011, godz. 12:30

-> Napewno się przyda… dzięki

26 czerwiec 2010, godz. 10:49

hellcoder.pl więc jaką metode polcecach wykorzystałem to u siebei na stronie i chciałbym to poprawić jeżeli to neizbyt dobre jest rozwiązanie

cs
30 maj 2008, godz. 9:53

Krótko i na temat….
I oczywiście tak jest lepiej niż przez PHP…
Uczmy się tworzyć wydajne skrypty :)

Beckon
24 marzec 2008, godz. 9:40

hmmm nie wiem jak dokładnie by to w kodzie wyglądało, bo sam zaczynam dopiero w tej kwestii. Ale:
1. pobrać wszystkie id rekordów z tabeli i wrzucić to tablicy wyliczeniowej.
2. w pętli losujemy 5 liczb zakresu o rozmiarze utworzonej tablicy (obsłużyć trzeba, by liczby się nie powtarzały)
3. zrobić zapytanie, dla pięciu liczb np “select * from tabela where id=$los[1] or id=$los[2]” itd..
Jak tooceniacie takie rozwiązanie?

20 styczeń 2008, godz. 2:31

Akurat ta metoda jest dobra dla małej ilości rekordów. Dlaczego? Dlatego, że MySQL będzie generował wartość RAND dla każdego wiersza w tabeli, a dopiero potem pobierze 5 rekordow, a np: RAND() * 100000 wierszy potrafi ‘troszke’ przymulic.

 
 
Copyright © 2006-2011 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker