我希望使用jOOQ构建并执行类似于这样的查询。
SELECT EXISTS( subquery )
例如:
SELECT EXISTS(SELECT 1 FROM icona_etiqueta WHERE pvp IS NULL AND unitat_venda = 'GRAMS')
我该怎么做?它能完成吗?
我希望使用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'))
);
直接返回一个布尔值。
您自己的解决方案是您想要做的事情最方便的方法。更一般的方法是使用:
create.select(field(exists(...)));
你可以使用DSL.field(Condition)
将一个由DSL.exists(Select)
创建的Condition
嵌套在一个Field
中。但是从jOOQ 3.9开始,Field<Boolean>
和Condition
不再是相同类型。这在jOOQ 3.17中已经发生了变化,详情请参见#11969。你现在也可以使用下面的简写形式:
create.select(exists(...));
fetchExists
。 - Hantsy