我有职位公司表,我想提取符合以下条件的20个职位:

  1. 仅来自两(2)家公司
  2. 的工作
  3. 每家公司最多可以有10个工作岗位
  4. 我用 UNION DISTINCT 尝试了以下 SELECT ,但问题是 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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top