开发者社区> 问答> 正文

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

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

仅来自两(2)个具名公司的职位 每个公司最多可以有10个工作 我曾尝试以下SELECT同UNION 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的方法可能更聪明,因此欢迎提出任何改进建议。

展开
收起
保持可爱mmm 2020-05-16 22:15:27 540 0
1 条回答
写回答
取消 提交回答
  • 要将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);来源:stack overflow

    2020-05-16 22:23:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像