如何查询?(sql/jpql)

如何查询?(sql/jpql),sql,spring-data-jpa,Sql,Spring Data Jpa,我需要创建一个查询,但它很难(至少对我来说) 我的产品存储在db中,每个产品都属于一个工厂。 每个工厂只能同时生产一种自己的产品。 每个产品都有一个编号,表示其在工厂队列中的订单。 每个产品都有一个字段,如果其工厂已开始处理该字段,则该字段为数字;如果该产品在队列中,则该字段为空 查询必须返回产品列表,其中包含每个工厂队列中的第一个产品,但前提是工厂当前未处理任何产品。 请参见以下示例: 给定: Id FactoryId Working Order Product1

我需要创建一个查询,但它很难(至少对我来说)

我的产品存储在db中,每个产品都属于一个工厂。
每个工厂只能同时生产一种自己的产品。
每个产品都有一个编号,表示其在工厂队列中的订单。
每个产品都有一个字段,如果其工厂已开始处理该字段,则该字段为数字;如果该产品在队列中,则该字段为空

查询必须返回产品列表,其中包含每个工厂队列中的第一个产品,但前提是工厂当前未处理任何产品。

请参见以下示例:

给定:

Id          FactoryId   Working     Order
Product1    Factory1    4654        1

Product2    Factory2    9841        3
Product3    Factory2    NULL        6

Product4    Factory3    NULL        4
Product5    Factory3    NULL        7

Product6    Factory4    NULL        2
Product7    Factory4    3211        9

product8    Factory5    NULL        10
product9    Factory5    NULL        5
product10   Factory5    NULL        13
Id          FactoryId   Working     Order
Product4    Factory3    NULL        4
product9    Factory5    NULL        5
结果:

Id          FactoryId   Working     Order
Product1    Factory1    4654        1

Product2    Factory2    9841        3
Product3    Factory2    NULL        6

Product4    Factory3    NULL        4
Product5    Factory3    NULL        7

Product6    Factory4    NULL        2
Product7    Factory4    3211        9

product8    Factory5    NULL        10
product9    Factory5    NULL        5
product10   Factory5    NULL        13
Id          FactoryId   Working     Order
Product4    Factory3    NULL        4
product9    Factory5    NULL        5

我使用Spring数据JpaRepository。

您可以将
不存在
与相关子查询一起使用:

select t.*
from table t
where not exists (select 1 
                  from table t1 
                  where t1.FactoryId = t.FactoryId and 
                        t1.working is not null) and
       Order = (select min(t1.order) 
                from table t1 
                where t1.FactoryId = t.FactoryId
               );

我需要一些时间将它翻译成jpql,但它可以工作。谢谢