Ich mag Zeilen in zufälliger Reihenfolge auszuwählen, indem durch group_id
sortierte:ORDER BY rand() und die Gruppe mit group_id
id group_id
1 1
2 1
3 2
4 2
5 3
6 4
ich sie gerne möchte unten oder randomisierte, aber immer noch gruppiert sortiert werden:
id group_id
5 3
3 2
4 2
1 1
2 1
6 4
Unten wird sie sortieren, aber ich möchte die Art zufällig sein. Wie erreiche ich das?
Unten ist eine Beispielabfrage, die ich für die tatsächliche Anwendung herausfinden werde.
SELECT * FROM (SELECT requests.*, accounts.username, accounts.password
FROM requests LEFT JOIN accounts ON requests.acc_id = accounts.id
WHERE requests.status NOT IN(1) AND accounts.status=1 ORDER BY RAND()
) AS subquery GROUP BY acc_id
Ich brauchte eine Weile, um es herauszufinden, aber Sie möchten _randomly_ auf 'group_id' richtig sortieren? Mit anderen Worten, Sie möchten eine zufällige Reihenfolge, in der alle Zeilen mit der gleichen 'group_id' nebeneinander liegen? – Rick
Sie sollten 'ORDER BY RAND()' nicht verwenden, da mysql nicht nur angewiesen wird, "werfen Sie bitte alle Indizes weg", sondern auch "schreiben Sie die gesamte Ergebnismenge auf einen Datenträger und verwenden Sie filesort". Ihre Tabelle könnte jetzt klein genug sein, dass dies nicht bemerkbar ist, aber dies wird * exponentiell schlechter *, wenn die Datenmenge wächst. – Sammitch