Nachdem die Datenbank gruppiert ist, erhalten Sie die ersten N Datensätze jeder Gruppe
Ihre Datenbankdaten sind in Gruppen organisiert und Sie müssen die obersten N Datensätze jeder Gruppierung extrahieren. Hierzu können Sie folgende Strategien nutzen:
UNION ALL-Methode:
Verwenden Sie den UNION ALL-Operator, um die ersten N Datensätze jeder Gruppe zu kombinieren. Wenn Sie beispielsweise zwei Gruppierungen haben und die ersten beiden Datensätze für jede Gruppierung abrufen möchten, können Sie Folgendes verwenden:
<code class="language-sql">( SELECT * FROM mytable WHERE `group` = 1 ORDER BY age DESC LIMIT 2 ) UNION ALL ( SELECT * FROM mytable WHERE `group` = 2 ORDER BY age DESC LIMIT 2 )</code>
Zeilennummernmethode:
Generieren Sie Zeilennummern für jeden Datensatz mit der folgenden Abfrage:
<code class="language-sql">SELECT person, `group`, age, (@num:=IF(@group = `group`, @num +1, IF(@group := `group`, 1, 1))) row_number FROM test t CROSS JOIN (SELECT @num:=0, @group:=NULL) c ORDER BY `Group`, Age DESC, person</code>
Diese Abfrage weist jedem Datensatz in seiner Gruppe eine Zeilennummer zu. Anschließend können Sie die Ergebnisse filtern, um nur Datensätze abzurufen, deren Zeilennummern kleiner oder gleich N sind:
<code class="language-sql">SELECT person, `group`, age FROM ( ... (上述查询) ... ) AS x WHERE x.row_number <= N</code>
Andere Methoden:
Der im Artikel erwähnte xaprb-Artikel bietet andere Möglichkeiten, dieses Ergebnis zu erzielen, einschließlich:
Der beste Ansatz hängt von Ihrem spezifischen Datenbanksystem und Ihren Leistungsanforderungen ab.
Das obige ist der detaillierte Inhalt vonWie rufe ich die Top N -Datensätze für jede Gruppe in einer Datenbank ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!