首页 > 解决方案 > 在 JPQL 中转换 NOT IN SELECT 查询

问题描述

SELECT TI
 FROM
    Timpot TI 
 WHERE 
    TI.idImpot not in 
 (select TREG.TImpot.idImpot from Tri1342 TRED where TRED.etatRgltImpot='ANNULE' ) 

我在 JPQL 中有这个请求,但它不起作用我认为这是因为 not in select 子句,我想要一些解释。谢谢

标签: sqlsubqueryjpqlnot-exists

解决方案


您可以使用更有效的 NOT EXISTS 子句,如下所示:

SELECT TI
FROM Timpot TI 
WHERE NOT EXISTS(
    SELECT 1 FROM Tri1342 TRED 
    WHERE TRED.etatRgltImpot='ANNULE' AND TRED.TImport.idImpot = TI.idImport
)

推荐阅读