如何使用 jOOQ 创建 SELECT EXISTS(子查询)?

How can I create a SELECT EXISTS (subquery) with jOOQ?

我想用 jOOQ 构建并执行这样的查询。

SELECT EXISTS( subquery )

例如:

SELECT EXISTS(SELECT 1 FROM icona_etiqueta WHERE pvp IS NULL AND unitat_venda = 'GRAMS')

我该怎么做?可以吗?

找到了。我正在寻找一个 selectExists 方法并被 DSL.exists() 谓词构造函数弄糊涂了。

有一个更方便fetchExists(subquery)

我的具体例子是这样解决的:

create.fetchExists(
        create.selectOne()
              .from(ICONA_ETIQUETA)
              .where(ICONA_ETIQUETA.PVP.isNull(),
                     ICONA_ETIQUETA.UNITAT_VENDA.eq('GRAMS'))
    );

其中直接returns一个布尔值。

是您想要做的最方便的方法。更通用的方法是使用:

create.select(field(exists(...)))

包装 Condition 的地方(由 DSL.exists(Select)) in a Field using DSL.field(Condition) 创建。

从 jOOQ 3.9 开始,Field<Boolean>Condition 不是同一类型。 #3867.

以后这可能会改变