首页 > 解决方案 > 如何在 JOOQ 中编写多字段“in”谓词?

问题描述

在 JOOQ 中,我可以编写如下 SQL 的代码吗?

我不知道如何编写in具有多个字段的谓词。

select some_value
  from t1
  where (t1.id1, t1.id2) in ((1, 2), (1, 3), (2, 1))

标签: javasqljooq

解决方案


您正在寻找DSL.row()构造函数。另见: https ://www.jooq.org/doc/latest/manual/sql-building/conditional-expressions/in-predicate-degree-n

在你的情况下,写:

DSL.using(configuration)
   .select(T1.SOME_VALUE)
   .from(T1)
   .where(row(T1.ID1, T1.ID2).in(row(1, 2), row(1, 3), row(2, 1)))
   .fetch();

一如既往:

// This static import is implied
import static org.jooq.impl.DSL.*;

推荐阅读