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

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

Susan Sarandon
Freigeben: 2024-12-28 02:02:14
Original
491 Leute haben es durchsucht

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

Datenbankauswahl über mehrere Kategorien hinweg randomisieren

Die hier vorgestellte Herausforderung besteht darin, einen einzelnen zufälligen Datensatz aus jeder Kategorie innerhalb einer Datenbank abzurufen. Die Items-Tabelle enthält diese Datensätze, die jeweils einer Kategorie zugeordnet sind, die durch eine entsprechende Kategorientabelle angegeben wird.

Um diese Aufgabe anzugehen, kann man die inhärente Zufälligkeit von MySQL mit der RAND()-Funktion und der LIMIT 1-Klausel nutzen. Das Einzigartige hier ist jedoch die Notwendigkeit, für jede einzelne Kategorie einen zufälligen Datensatz auszuwählen.

Die folgende Abfrage geht diese Herausforderung elegant an:

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
Nach dem Login kopieren

Die Struktur dieser Abfrage ermöglicht das Abrufen eines Datensatzes Zufälliger Datensatz aus jeder Kategorie:

  • Die Hauptabfrage verwendet eine Unterabfrage, um alle mit ihren jeweiligen Kategorien verknüpften Elemente sortiert abzurufen zufällig.
  • Die Unterabfrage dient als Grundlage für die nachfolgende Filterung durch die partielle GROUP BY. Dies stellt einen Datensatz pro Kategorie sicher, indem die „shuffled_items“ basierend auf der Kategorie-ID (cid) gruppiert werden.

Auch wenn dieser Ansatz möglicherweise nicht besonders schnell ist, löst er effektiv die Herausforderung der zufälligen Datensatzauswahl über mehrere hinweg Kategorien. Alternative Optimierungsvorschläge sind willkommen, um den Nutzen dieser Abfrage weiter zu steigern.

Das obige ist der detaillierte Inhalt vonWie wähle ich einen zufälligen Datensatz aus jeder Kategorie in einer MySQL-Datenbank aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage