Heim > Datenbank > MySQL-Tutorial > Wie rufe ich die Top N -Datensätze für jede Gruppe in einer Datenbank ab?

Wie rufe ich die Top N -Datensätze für jede Gruppe in einer Datenbank ab?

Mary-Kate Olsen
Freigeben: 2025-01-25 09:46:13
Original
416 Leute haben es durchsucht

How to Retrieve the Top N Records for Each Group in a Database?

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

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

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

Andere Methoden:

Der im Artikel erwähnte xaprb-Artikel bietet andere Möglichkeiten, dieses Ergebnis zu erzielen, einschließlich:

  • Unterabfrage oder korrelierte Unterabfrage verwenden
  • Gespeicherte Prozeduren verwenden
  • Fensterfunktionen verwenden (für unterstützte Datenbanken)

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!

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