我想用jOOQ构建并执行这样一个查询。
SELECT EXISTS( subquery )
例如:
SELECT EXISTS(SELECT 1 FROM icona_etiqueta WHERE pvp IS NULL AND unitat_venda = 'GRAMS')
我该怎么做?能做到吗?
0ve6wy6x1#
找到了。我在寻找一个selectExists方法,却被DSL.exists() predicate 构造函数弄糊涂了。有一个方便得多的fetchExists(subquery)。我的具体例子是这样解决的:
selectExists
DSL.exists()
fetchExists(subquery)
create.fetchExists( create.selectOne() .from(ICONA_ETIQUETA) .where(ICONA_ETIQUETA.PVP.isNull(), ICONA_ETIQUETA.UNITAT_VENDA.eq('GRAMS')) );
直接返回一个布尔值。
9wbgstp72#
Your own solution是最方便的方法。更通用的方法是用途:
create.select(field(exists(...)));
在这里你用DSL.field(Condition)将Condition(由DSL.exists(Select)创建) Package 在Field中。从jOOQ 3.9开始,Field<Boolean>和Condition不是相同的类型。这在jOOQ 3.17中用#11969改变了。现在你也可以写:
DSL.field(Condition)
Condition
DSL.exists(Select)
Field
Field<Boolean>
create.select(exists(...));
2条答案
按热度按时间0ve6wy6x1#
找到了。我在寻找一个
selectExists
方法,却被DSL.exists()
predicate 构造函数弄糊涂了。有一个方便得多的
fetchExists(subquery)
。我的具体例子是这样解决的:
直接返回一个布尔值。
9wbgstp72#
Your own solution是最方便的方法。更通用的方法是用途:
在这里你用
DSL.field(Condition)
将Condition
(由DSL.exists(Select)
创建) Package 在Field
中。从jOOQ 3.9开始,Field<Boolean>
和Condition
不是相同的类型。这在jOOQ 3.17中用#11969改变了。现在你也可以写: