gpt4 book ai didi

java - JOOQ 中的 IF 条件

转载 作者:行者123 更新时间:2023-11-30 21:49:04 26 4
gpt4 key购买 nike

MySQL 允许我运行以下查询:

SELECT SUM(IF(COLUMN1 > COLUMN2, COLUMN2, COLUMN1)), SUM(IF(COLUMN3 = 0,4 ,10)) FROM TABLE;

我如何在 JOOQ 中执行此操作?

最佳答案

我假设您指的是 MySQL 的 IF() jOOQ 目前不支持的函数,仅仅是因为 if 是 Java 中的保留关键字,所以没有 1:1 映射到此函数的 Java 方法。

但是正如您在 MySQL 的文档中也看到的那样,您可以非常轻松地将 IF() 重写为更标准的 CASE 表达式。因此,您的查询将是 SQL 中的这个查询:

SELECT 
SUM (CASE WHEN COLUMN1 > COLUMN2 THEN COLUMN2 ELSE COLUMN1 END),
SUM (CASE WHEN COLUMN3 = 0 THEN 4 ELSE 10 END)
FROM TABLE

转换为 jOOQ 如下:

using(configuration)
.select(sum(when(TABLE.COLUMN1.gt(TABLE.COLUMN2), TABLE.COLUMN2)
.otherwise(TABLE.COLUMN1)),
sum(when(TABLE.COLUMN3.eq(0), 4).otherwise(10)))
.from(TABLE)
.fetch();

See the jOOQ manual's section about the CASE expression for details .

一如既往,这个静态导入是隐含的:

import static org.jooq.impl.DSL.*;

关于java - JOOQ 中的 IF 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48060995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com