在MySQL查询中结合UNION和LIMIT操作

我有一个Jobs和一个公司的表格,我想提取20个符合以下标准的工作:

  1. 只有两(2)名公司的工作
  2. 每个公司最多可以有10个工作

我已经尝试了UNION DISTINCT的以下SELECT ,但问题是LIMIT 0,10适用于整个结果集。 我希望它适用于每个公司。

如果每个公司没有10个工作,那么查询应该返回find的所有工作。

 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 DISTINCT 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 

我是MySQL的新手,因此意识到可能有更聪明的方法来做到这一点,而不是使用UNION,所以任何改进build议都是值得欢迎的。

引用文档 ,

要将ORDER BY或LIMIT应用于单个SELECT,请将该子句放在括号中的括号内:

 (SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10) UNION (SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);