在MySQL查询结合UNION和LIMIT操作(Combining UNION and LIMIT

2019-07-17 19:45发布

我有一个乔布斯公司表,我想提取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这是一个更聪明的办法,所以任何改进的建议是绝对欢迎。

Answer 1:

引用的文档 ,

通过或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);


文章来源: Combining UNION and LIMIT operations in MySQL query