So wählen Sie eine zufällige Reihe mit einer group by-Klausel?
Habe ich die folgende Tabelle
Was ich versuche zu tun ist, wählen Sie drei zufällige Bilder, sondern um sicherzustellen, dass keine zwei Bilder das gleiche Objekt, was ich versuchte zu tun ist, zu tun, eine GRUPPE, INDEM Sie zusammen mit einer ORDER BY rand() aber das wird scheitern, weil es immer geben von mir cat1.jpg, dog1.jpg, box1.jpg (Alle Bilder aus, deren Pfad endet mit 1 und nicht die anderen)
Geige enthält die Abfrage, die ich lief, und wie es nicht funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie brauchen, ist ein Zufälliges Aggregat-Funktion. In der Regel gibt es keine solche Funktionen in der aktuellen RDBMS.
Ähnliche Frage hat gefragt worden.
So die grundlegende Idee ist, schieben Sie die Elemente, dann die Gruppe und dann für jede Gruppe nur wählen Sie die erste Zeile für jede Gruppe. Wenn wir ändern Sie eine der Antworten, die sich auf dem link, den wir bekommen.
Können Sie nicht bekommen ein zufälliges Bild als MySQL-immer wieder, die Daten basierend auf der Zeit insert (first come, first serve), d.h. die interne Bestellung.
Aber können Sie sich ein zufälliges Resultat mit dem folgenden Ansatz (fiddle):
Wenn es eine einschränkende WHERE-Bedingung auf die Objekte Tabelle, erhalten Sie möglicherweise eine bessere Leistung, wenn Sie beitreten die erste und die GROUP_CONCAT.
Ich denke, das sollte tun:
ORDER BY random()
LIMIT 1