Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Ergebnisse pro Unternehmen begrenzen, wenn ich UNION in MySQL verwende?
Die Kombination von UNION- und LIMIT-Operationen in MySQL begrenzt die Anzahl der Ergebnisse pro Unternehmen
Ziel ist es, 20 Stellenangebote, die bestimmte Kriterien erfüllen, von zwei bestimmten Unternehmen abzurufen und dabei die Anzahl der Ergebnisse auf maximal 10 pro Unternehmen zu begrenzen. Bei der Verwendung von UNION DISTINCT und LIMIT treten Probleme auf, da sich Letzteres auf die gesamte Ergebnismenge und nicht auf einzelne Ergebnismengen für jedes Unternehmen auswirkt.
Die folgende Lösung behebt dieses Problem:
<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') ORDER by name, title LIMIT 0, 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 IN ('Company2') ORDER by name, title LIMIT 0, 10)) ORDER BY name;</code>
Die wichtigste Änderung besteht darin, die LIMIT-Klausel in einzelne SELECT-Anweisungen zu verschachteln, anstatt sie auf die kombinierte Ergebnismenge anzuwenden. Dadurch wird sichergestellt, dass die Ergebnisse auf maximal 10 pro Unternehmen begrenzt sind. Anschließend verwenden wir eine weitere äußere ORDER BY-Anweisung, um die endgültige kombinierte Ergebnismenge nach Firmennamen zu sortieren.
Denken Sie daran, dass MySQL ORDER BY nach UNION anwendet, daher ist ein weiteres ORDER BY erforderlich, um die kombinierte Ergebnismenge zu sortieren.
Das obige ist der detaillierte Inhalt vonWie kann ich die Ergebnisse pro Unternehmen begrenzen, wenn ich UNION in MySQL verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!