Heim >Datenbank >MySQL-Tutorial >Wie wähle ich in MySQL einen zufälligen Datensatz aus jeder Kategorie aus?
Auswählen eines zufälligen Datensatzes aus jeder Kategorie in MySQL
Diese Datenbankabfrage beinhaltet die Auswahl eines zufälligen Datensatzes aus jeder Kategorie in einer Tabelle. Die bereitgestellte Tabelle enthält eine „Items“-Tabelle mit Spalten für „id“, „name“ und „category“. Jedes Element gehört zu einer von sieben Kategorien, die in der Tabelle „Kategorien“ mit den Spalten „id“ und „category“ dargestellt werden.
Um diese Abfrage effektiv anzugehen, können Sie eine Kombination aus Joins und der RAND()-Funktion verwenden . Hier ist die Abfrage, die die Aufgabe erfüllt:
SELECT * FROM ( SELECT c.id AS cid, c.category, i.id AS iid, i.name FROM categories c INNER JOIN items i ON c.id = i.category ORDER BY RAND() ) AS shuffled_items GROUP BY cid
Diese Abfrage verknüpft zunächst die Tabellen „Kategorien“ und „Artikel“ in der Spalte „Kategorie“, um alle Artikel und ihre entsprechenden Kategorien abzurufen. Die ORDER BY RAND()-Klausel wendet eine zufällige Reihenfolge auf die Ergebnisse an. Anschließend wird die Abfrage in eine Unterabfrage verpackt und nach der Spalte „cid“ gruppiert. Durch diese Gruppierung wird sichergestellt, dass jede Kategorie auf einen einzelnen zufälligen Datensatz beschränkt ist.
Beachten Sie, dass bei großen Tabellen möglicherweise eine Leistungsoptimierung erforderlich ist. Wenn die Abfrage langsam ausgeführt wird, sollten Sie die Verwendung von TEMPORARY TABLES von MySQL in Betracht ziehen oder einen Index für die Spalte „Kategorie“ erstellen.
Das obige ist der detaillierte Inhalt vonWie wähle ich in MySQL einen zufälligen Datensatz aus jeder Kategorie aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!