mysql允许我运行以下查询:
SELECT SUM(IF(COLUMN1 > COLUMN2, COLUMN2, COLUMN1)), SUM(IF(COLUMN3 = 0,4 ,10)) FROM TABLE;
我怎么能在家里做这个 JOOQ ?
JOOQ
3gtaxfhh1#
我猜你指的是mysql的 IF() jooq目前不支持这个函数,因为 if 是java中的保留关键字,因此对于该函数没有1:1Map到java方法。但正如您在mysql的文档中看到的,您可以非常轻松地重写 IF() 更标准 CASE 表情。因此,您的查询将是sql中的以下查询:
IF()
if
CASE
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();
请参阅jooq手册中关于 CASE 表达细节。一如往常,这种静态导入意味着:
import static org.jooq.impl.DSL.*;
1条答案
按热度按时间3gtaxfhh1#
我猜你指的是mysql的
IF()
jooq目前不支持这个函数,因为if
是java中的保留关键字,因此对于该函数没有1:1Map到java方法。但正如您在mysql的文档中看到的,您可以非常轻松地重写
IF()
更标准CASE
表情。因此,您的查询将是sql中的以下查询:翻译成jooq如下:
请参阅jooq手册中关于
CASE
表达细节。一如往常,这种静态导入意味着: