在 JPQL 中转换 NOT IN SELECT 查询

Posted

技术标签:

【中文标题】在 JPQL 中转换 NOT IN SELECT 查询【英文标题】:Convert a NOT IN SELECT query in JPQL 【发布时间】:2021-02-10 15:37:34 【问题描述】:
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 子句,我想要一些解释。谢谢

【问题讨论】:

【参考方案1】:

您可以使用 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
)

【讨论】:

以上是关于在 JPQL 中转换 NOT IN SELECT 查询的主要内容,如果未能解决你的问题,请参考以下文章

在 JPQL 中将整数转换为字符串

JPQL 查询参数中的时间戳未转换为 UTC

SQL 代码在转换为 JPQL 代码时不起作用(ORA-00904 错误代码)

条件查询,SQL,JPQL,HQL

将此 JPQL 查询转换为 SQL 查询

如何将复杂的 SQL 查询转换为 JPQL?