JOOQ查询布尔表达式的结果

JOOQ query for result of boolean expression

请建议 JOOQ DSL 查询布尔表达式的结果
在 SQL 我会写:

SELECT sum(apples.quantity) > sum(bananas.quantity)
FROM ...

为了获得 jOOQ Condition 用于总和比较,只需写:

Condition condition = sum(apples.quantity).gt(sum(bananas.quantity));

现在,Condition 类型目前无法放入 jOOQ 的 SELECT 子句中,但您可以使用 DSL.field(Condition):

包装它们
Field<Boolean> field = field(sum(apples.quantity).gt(sum(bananas.quantity)));

jOOQ 将负责决定您的 SQL 方言是否允许使用谓词作为列表达式(例如 MySQL、PostgreSQL、SQLite),或者这是否需要使用等效的 CASE 表达式(例如 DB2、HANA、Oracle、SQL Server)来模拟。

这导致:

Record1<Boolean> result =
DSL.using(configuration)
   .select(field(sum(apples.quantity).gt(sum(bananas.quantity))))
   .from(...)
   .fetchOne();