Mam kwerendy MySQL, że wyniki w coś takiego:Wybierz losowy wiersz dla różnych wartości pola?
person | some_info
==================
bob | pphsmbf24
bob | rz72nixdy
bob | rbqqarywk
john | kif9adxxn
john | 77tp431p4
john | hx4t0e76j
john | 4yiomqv4i
alex | n25pz8z83
alex | orq9w7c24
alex | beuz1p133
etc...
(To jest tylko uproszczonym przykładem W rzeczywistości istnieje około 5000 wierszy w moich wynikach.).
Co muszę zrobić, to przejść przez każdą osobę na liście (Bob, John, Alex, itp ...) i wyciągnąć wiersz z ich zestawu wyników. Rząd, który wyciągam, jest przypadkowy, ale także oparty na luźnym zestawie warunków. To naprawdę nie jest ważne, aby określić warunki tutaj, więc powiem po prostu, że jest to losowy wiersz dla przykładu.
W każdym razie, używając PHP, to rozwiązanie jest całkiem proste. Wykonuję moje zapytanie i uzyskuję 5000 wierszy wstecz i iteruję je, wyciągając losowy wiersz dla każdej osoby. Łatwo.
Zastanawiam się jednak, czy można uzyskać to, co chciałbym, z tylko kwerendy MySQL, tak, że nie muszę używać PHP do iteracji wyników i wyciągania losowych wierszy.
Mam przeczucie, że może obejmować BUNCH subselects, jak jeden dla każdej osoby, w którym to przypadku to rozwiązanie będzie więcej czasu, zasobów i przepustowości niż moje obecne rozwiązanie.
Czy istnieje sprytne zapytanie, które może wykonać to wszystko za pomocą jednego polecenia?
Here is an SQLFiddle z którym można grać.
Trudno powiedzieć, nie znając warunków.Naiwna odpowiedź: jeśli nie potrzebujesz danych w 'some_info', po prostu wybierz osobę, GDZIE/* tu warunki * /' – bfavaretto
Potrzebuję 'some_info'. –