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();
请建议 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();