Witam, mam problem i niestety nie jestem w stanie sobie z nim poradzić, może ktoś z Was by był mi pomocny.
Chciałbym wypisać wszystkie dane w losowej kolejności, ale tylko z zakresu używając do tego "limit". Np wypisuje pierwsze 12 rekordów i je losuje, potem kolejne 12 rekordów z offsetem 12 i losuje tylko z tego zakresu itd. Czy ktoś umiałbym mi pomóc?
0
0
SELECT * FROM (SELECT * FROM tabela LIMIT 0,12) x ORDER BY Rand()
1
Marcin.Miga napisał(a):
SELECT * FROM (SELECT * FROM tabela LIMIT 0,12) x ORDER BY Rand()
to nie wybierze kolejnych dwunastu rekordów tylko wylosuje rekordy ze wszystkich poza pierwszymi dwunastoma
jeżeli chcesz próbkować dane korzystając z tego samego wyniku losowania musisz użyć wspólnego ziarna (seed)
przekazujesz je do parametru funkcji rand()
i używasz w ten sposób:
SELECT * FROM tabela ORDER BY RAND(32145) LIMIT 0,12
gdzie 32145
to jakieś ziarno które musisz sobie wcześniej wylosować w programie
jeżeli chcesz losować od początku i włączyć do losowania rekordy które już były, wystarczy że zmienisz ziarno
0
Marcin.Miga napisał(a):
SELECT * FROM (SELECT * FROM tabela LIMIT 0,12) x ORDER BY Rand()
Bardzo dziękuję. O takie coś mi chodziło :)