MySQL - Cum pot comanda rezultatele în mod aleatoriu în interiorul unei coloane?

voturi
1

Am nevoie pentru a prelua rânduri dintr-un tabel (de exemplu: „ordinele“) dispuse de o coloană (vă permite să spunem „utilizator“) la întâmplare. Asta este, am nevoie de toate ordinele de la același utilizator să rămână împreună (una după alta), iar utilizatorii să fie comandate în mod aleatoriu.

Întrebat 12/03/2009 la 13:30
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
0

Cum aleatoare nu-l trebuie să fie? Mă pot gândi la câteva răspunsuri posibile.

Dacă secvența de „întâmplare“ ar trebui să fie repetabile, puteți sorta după un hash de ID-ul de utilizator, folosind MD5 sau unul personalizat creați-vă de exemplu, ORDER BY MD5 (), secondary_sort_column.

Publicat 12/03/2009 la 13:44
sursa de către utilizator

voturi
3

Am de gând să-și asume ai un al doilea tabel, numit „utilizatori“, care are toți utilizatorii din ea. Dacă nu, ai putea face în continuare acest lucru prin adăugarea unui alt subinterogare SELECT DISTINCT pentru comenzi, dar asta ar fi mult Messier:

SELECT orders.* 
FROM orders 
INNER JOIN (SELECT userid, RAND() as random FROM users) tmp
ON orders.userid = tmp.userid
ORDER BY tmp.random, tmp.userid

Veți dori să comandați de numărul aleatoriu și ID-ul utilizatorului, astfel că, dacă două ID-uri de utilizator obține același număr aleatoriu ordinele lor nu vor fi toate amestecate împreună.

Publicat 12/03/2009 la 13:45
sursa de către utilizator

voturi
0

ordine de inversa (utilizator)?

Publicat 13/03/2009 la 10:08
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more