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

我有一个 和 表,我想提取20个满足以下条件的工作:

  1. 仅来自两(2)个具名公司的职位
  2. 每个公司最多可以有10个工作

我曾尝试以下SELECTUNION DISTINCT,但问题是,LIMIT 0,10适用于整个结果集。我希望它适用于每个公司。

如果每个公司没有10个工作,则查询应返回找到的所有工作。

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的方法可能更聪明,因此欢迎提出任何改进建议。

回答:

引用文档,

要将ORDER BY或LIMIT应用于单个SELECT,请将子句放在包围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);

以上是 在MySQL查询中结合UNION和LIMIT操作 的全部内容, 来源链接: utcz.com/qa/421027.html

回到顶部