Heim >Datenbank >MySQL-Tutorial >Wie wähle ich in MySQL einen zufälligen Datensatz aus jeder Kategorie aus?

Wie wähle ich in MySQL einen zufälligen Datensatz aus jeder Kategorie aus?

DDD
DDDOriginal
2024-12-26 15:55:14556Durchsuche

How to Select a Random Record from Each Category in MySQL?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn