如何使用 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.
以后这可能会改变
我想用 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.