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中文网其他相关文章!