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

问题描述 投票:0回答:1

我有一个 工作机会 和a 公司介绍 表,我想提取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,所以任何改进的建议都非常欢迎。

mysql oracle limit
1个回答
163
投票

引用 文献,

要将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);
© www.soinside.com 2019 - 2024. All rights reserved.