MySQL 中結合 UNION 和 LIMIT 操作限制每個公司結果數
目標是從兩個指定公司中檢索符合特定條件的 20 個職位,同時限制每個公司的結果數最多為 10 個。在使用 UNION DISTINCT 和 LIMIT 時遇到問題,因為後者影響的是整個結果集,而不是每家公司單獨的結果集。
以下解決方案解決了這個問題:
<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>
關鍵調整是將 LIMIT 子句嵌套在各個 SELECT 語句中,而不是將其應用於組合的結果集。這確保了每個公司的結果都限制在最多 10 個。然後,我們使用另一個外部 ORDER BY 語句以公司名稱對最終組合的結果集進行排序。
請記住,MySQL 在 UNION 之後套用 ORDER BY,因此需要另一個 ORDER BY 來對組合的結果集進行排序。
以上是在 MySQL 中使用 UNION 時如何限制每個公司的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!