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

pobjuy32  于 2022-12-04  发布在  其他
关注(0)|答案(2)|浏览(157)

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

SELECT EXISTS( subquery )

例如:

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

我该怎么做?能做到吗?

0ve6wy6x

0ve6wy6x1#

找到了。我在寻找一个selectExists方法,却被DSL.exists() predicate 构造函数弄糊涂了。
有一个方便得多的fetchExists(subquery)
我的具体例子是这样解决的:

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

直接返回一个布尔值。

9wbgstp7

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改变了。现在你也可以写:

create.select(exists(...));

相关问题