Rand() oraz limit

0

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

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 :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1