![](/img/trans.png)
[英]SQL query to select only results having an exclusive set of related entities from another table
[英]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.