我想用jOOQ构建和执行这样的查询.
SELECT EXISTS( subquery )
Run Code Online (Sandbox Code Playgroud)
举个例子:
SELECT EXISTS(SELECT 1 FROM icona_etiqueta WHERE pvp IS NULL AND unitat_venda = 'GRAMS')
Run Code Online (Sandbox Code Playgroud)
我该怎么做?可以吗?
找到了.我正在寻找一个selectExists
方法,并被DSL.exists()
谓词构造函数搞糊涂了.
有一个更方便fetchExists(subquery)
.
我的具体示例如下解决:
create.fetchExists(
create.selectOne()
.from(ICONA_ETIQUETA)
.where(ICONA_ETIQUETA.PVP.isNull(),
ICONA_ETIQUETA.UNITAT_VENDA.eq('GRAMS'))
);
Run Code Online (Sandbox Code Playgroud)
它直接返回一个布尔值.
您自己的解决方案是您想要做的事情的最方便的方法。更通用的方法是使用:
create.select(field(exists(...)))
Run Code Online (Sandbox Code Playgroud)
将 a Condition
(由DSL.exists(Select)
)包装在Field
using 中的地方DSL.field(Condition)
。
从 jOOQ 3.9 开始,Field<Boolean>
和Condition
不是相同的类型。这可能会在未来通过#3867 改变。