Dies ist in der Tat ein Duplikat von a previous question, so ist die Antwort da.
Aber auch wenn es in MySQL tatsächlich möglich ist, wird dies nicht wirklich empfohlen. PHP ist ein viel besseres Werkzeug, um dies zu handhaben, da das, was Sie gerade tun, Daten gemäß einer Geschäftsregel manipuliert. Es wird sehr viel einfacher sein, dies in PHP zu erledigen, und ich vermute, dass es auch weniger ressourcenintensiv ist.
Ein möglicher Weg, dies zu tun, was ich bevorzugen würde. Führen Sie eine zufällige Sortierung in SQL durch und paaren Sie dann zwei oder zwei Zeilen gegeneinander. Etwas wie folgt aus:
$grouping = {};
// Fetching both rows to ensure that we actually have an even number paired up.
while ($row = $res->fetch_array() && $row2 = $res->fetch_array()) {
$grouping[] = {$row['name'], $row2['name']};
}
Wenn Sie für eine nicht angepaßte Benutzer aufgelistet werden, um zu ermöglichen, bewegen Sie einfach die zweite auf die Innenseite der Schleife holen. Behandeln Sie dann das möglicherweise fehlende Ergebnis dort.
Mögliches Duplikat http://stackoverflow.com/questions/4823208/how-do-i-select-unique-pairs-of-rows-from-a- table-at-random – Jagrati
Da du es mit 'php' markiert hast: tu das in php. Es wird in MySQL ineffizient sein. Erzeugen Sie ein Array mit Ihren Nummern 1 ... max, verwenden Sie z. [shuffle] (http://php.net/manual/de/funktion.shuffle.php) und verwende dieses Array, um deine Paarungstabelle zu füllen (1. Wert im Array ist 1. 'from_id', 2. Wert ist 1.' to_id', 3. Wert ist 2.' from_id' und so weiter). – Solarflare
Danke @Solarflare für den Kommentar, aber ich möchte zufällige Benutzer Datensätze aus der Datenbank paaren. zufällige Paarung ist einfach in PHP einzurichten, aber ich möchte von der Datenbank auswählen Abfrage. –