Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Ergebnisse pro Tabelle begrenzen, wenn ich den UNION-Operator von MySQL verwende?

Wie kann ich die Ergebnisse pro Tabelle begrenzen, wenn ich den UNION-Operator von MySQL verwende?

Susan Sarandon
Susan SarandonOriginal
2025-01-14 12:57:44238Durchsuche

How to Limit Results Per Table When Using MySQL's UNION Operator?

Kombinierte Verwendung von UNION- und LIMIT-Operatoren in MySQL

Wenn Sie Daten aus mehreren Tabellen mit dem UNION-Operator abfragen, müssen Sie den LIMIT-Operator möglicherweise auf jede Ergebnismenge separat anwenden. Dies wird erreicht, indem LIMIT in Klammern um jede SELECT-Anweisung gesetzt wird.

Das folgende Beispiel soll 20 Jobs von zwei bestimmten Unternehmen extrahieren, mit einem Limit von 10 Jobs pro Unternehmen:

Falsches Beispiel:

<code class="language-sql">SELECT c.name, j.title, j.`desc`, j.link
  FROM jobs_job j
INNER JOIN companies_company c ON j.company_id = c.id
WHERE c.name IN ('Company1')
UNION
SELECT c.name, j.title, j.`desc`, j.link
  FROM jobs_job j
INNER JOIN companies_company c ON j.company_id = c.id
WHERE c.name IN ('Company2')
ORDER BY name, title
LIMIT 20;</code>

Das LIMIT 20 des obigen Codes wirkt sich auf die Ergebnismenge nach UNION aus, nicht auf eine einzelne SELECT-Anweisung.

Richtiges Beispiel:

<code class="language-sql">(SELECT c.name, j.title, j.`desc`, j.link
  FROM jobs_job j
INNER JOIN companies_company c ON j.company_id = c.id
WHERE c.name = 'Company1'
ORDER BY name, title
LIMIT 10)
UNION
(SELECT c.name, j.title, j.`desc`, j.link
  FROM jobs_job j
INNER JOIN companies_company c ON j.company_id = c.id
WHERE c.name = 'Company2'
ORDER BY name, title
LIMIT 10);</code>

Indem wir jede SELECT-Anweisung in Klammern setzen und LIMIT 10 einzeln anwenden, beschränken wir die Ergebnisse effektiv auf die Top-10-Positionen jedes Unternehmens. Wenn ein Unternehmen weniger als 10 Stellen hat, gibt die Abfrage trotzdem alle verfügbaren Ergebnisse zurück.

Dieser Ansatz folgt der Anleitung in der Dokumentation: „Um ORDER BY oder LIMIT auf ein einzelnes SELECT anzuwenden, setzen Sie die Klausel in Klammern um das SELECT.“ Es ist zu beachten, dass diese Methode nur jede Unterabfrage sortiert und einschränkt und die Sortierung der Endergebnisse eine zusätzliche Verarbeitung erfordert. Wenn Sie die endgültigen zusammengeführten Ergebnisse sortieren müssen, müssen Sie auf der äußersten Ebene eine weitere ORDER BY-Anweisung hinzufügen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Ergebnisse pro Tabelle begrenzen, wenn ich den UNION-Operator von MySQL verwende?. 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