首页 >数据库 >mysql教程 >在 MySQL 中使用 UNION 时如何限制每个公司的结果?

在 MySQL 中使用 UNION 时如何限制每个公司的结果?

Susan Sarandon
Susan Sarandon原创
2025-01-14 12:49:48751浏览

How to Limit Results Per Company When Using UNION in MySQL?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn