繁体   English   中英

SQL 查询与另一个表中的行集相关的最早记录

[英]SQL query for earliest record related to set of rows from another table

我有三张桌子:

订单:[id,月份]

工作:[id,状态]

JobOrder: [id, job_id, order_id]

订单由多个作业处理,作业可以处理多个月的订单。

我需要 select 最早的作业来处理每个月的所有订单,以便查询返回月份和最早(最小的 pk)作业的 id 来处理当月的所有订单。 无论我对 GOUP BY 查询做什么,我似乎都无法弄清楚这一点。 如何使用单个 SQL 查询来执行此操作并保证该作业与所有过滤订单相关?

如果您可以使用子查询,下面的 sql 可以提供帮助。

SELECT month, Min(job_id) 
FROM   (SELECT month, job_id
        FROM   order_tbl o 
               INNER JOIN joborder jo ON o.id = jo.order_id 
        GROUP  BY month, job_id 
        HAVING Count(DISTINCT order_id) = (SELECT Count(id) 
                                           FROM   order_tbl o1 
                                           WHERE  o1.month = o.month)) sub 
GROUP  BY month; 

参考: https://www.db-fiddle.com/f/6g4qiekAU4i3J8iRoAZiCA/3

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM