2012-01-08 17 views
17

Powiel możliwe:
Selecting Random Rows in MySQLWybierz losowe wierszy z tabeli mysql

Tworzę prostą aplikację internetową za pomocą PHP i MySQL. Muszę w nim losowo wybrać niewielki zestaw wierszy z tabeli w losowej kolejności. Jak mogę osiągnąć takie rzeczy za pomocą MySQL?

+2

należy przeszukać zanim zadasz pytanie. Wyszukiwanie dokładnego tytułu twojego pytania daje [to] (http://stackoverflow.com/questions/1283640) i wiele innych podobnych pytań. – DaveRandom

+0

[MySQL wybierz 10 losowych wierszy z 600 000 wierszy szybko] (https://stackoverflow.com/q/4329396/6521116) –

Odpowiedz

44
SELECT * FROM table ORDER BY RAND() LIMIT 10; 

Edit:

Przydatne informacje na temat funkcji MySQL RAND() można znaleźć here.

+0

Ouch ... Mam> 500M wierszy! To jest trochę powolne ... –

+2

Dostępne są inne opcje wykonania, jeśli masz sekwencyjny klucz podstawowy, wstępnie wyliczyć zakres identyfikatorów w wybranym języku i wykonać zapytanie "SELECT ... WHERE id IN (x)" –

+0

select count (*) od użytkowników; 'zwraca 10293453. Zapytanie' SELECT id FROM users ORDER BY RAND() LIMIT 10; 'trwa 5 sek. – klay

5
select * from table order by rand() limit 10 

Zauważ, że order by rand() z dużego zestawu danych jest bardzo powolny, ale w twoim przypadku to nie jest problem.

3

można to zrobić za pomocą funkcji RAND().

SELECT questine FROM tablename ORDER BY RAND() LIMIT 10 

wybierze 10 questines losowo pod założeniu questine jest przechowywany pod questine pola

Powiązane problemy