当前位置: 首页 > 知识库问答 >
问题:

具有N次元组的jOOQ“in”谓词

韦胜泫
2023-03-14

jOOQ 3.9文档暗示这是可能的,但他们的示例只给出了程度1:https://www.jOOQ.org/doc/3.9/manual/sql-building/condition-expressions/in-predicate-degree-n/

这段代码与我要查找的代码大致相同,但我无法获得ReferenceOrderIdlineNumbers的正确类型/数据,也无法获得Jooq生成的正确SQL。

Collection<Row2<String, Integer>> referenceOrderIdLineNumbers = ...
List<Object[]> rows = dsl.select(... , field("count(TABLE3)", Integer.class )
  .from(Tables.TABLE1)
  .join(Tables.TABLE2).on(Tables.TABLE2.PK1.eq(Tables.TABLE1.PK1))
  .join(Tables.TABLE3).on(Tables.TABLE3.PK2.eq(Tables.TABLE2.PK2))
  .where(
    row(Tables.TABLE1.FIELD1, Tables.TABLE2.FIELD2) // <-- what to 
    .in(referenceOrderIdLineNumbers)                // <-- do here??
  )
  .groupBy(...)
  .fetch();

共有1个答案

鲁华灿
2023-03-14

这对我来说是有效的。您可以尝试让jOOQ记录它为您生成的SQL,并尝试直接对您的数据库运行所述SQL。

参考资料:

  • https://www.jooq.org/doc/3.9/manual/sql-execution/logging/
  • https://www.jooq.org/doc/3.9/manual/sql-building/condition-expressions/in-predicate-degree-n/
Collection<Row2<String, Integer>> field1Field2Collection = new LinkedList<>();
field1Field2Collection.add(row("1", 1));
field1Field2Collection.add(row("2", 2));
field1Field2Collection.add(row("3", 3));

Result<Record2<String, Integer>> field1Field2Results = dsl
        .select(Tables.TABLE1.FIELD1, Tables.TABLE2.FIELD2)
        .from(Tables.TABLE1)
        .join(Tables.TABLE2).on(Tables.TABLE2.PK1.eq(Tables.TABLE1.PK1))
        .where(row(Tables.TABLE1.FIELD1, Tables.TABLE2.FIELD2).in(field1Field2Collection))
        .fetch();
 类似资料:
  • 本文向大家介绍Prologcall / N谓词,包括了Prologcall / N谓词的使用技巧和注意事项,需要的朋友参考一下 示例 该call/N谓词的家人可以在运行时调用任意Prolog的目标:            

  • 问题内容: 在JavaScript中,我想不出代码来从n个数组(其中m个元素)中生成组合的代码。对于其他语言,我也曾见过类似的问题,但答案包含了我不确定如何翻译的语法或库魔术。 考虑以下数据: 3个数组,其中包含不同数量的元素。我想做的是通过组合每个数组中的一项来获得所有组合。 例如: 等等。 如果数组的数目是固定的,则很容易进行硬编码实现。但是数组的数量可能会有所不同: 任何帮助将非常感激。 问

  • 谁能告诉我如何用Hazelcast谓词“in”子句吗。我想使用以下内容, 我想将值作为值的ArrayList传递。但是它抛出错误,因为它期望实现可比的对象。对此有任何解决方法吗?

  • 问题内容: 在n = 5和k = 3的情况下,以下循环将执行此操作 但是效率不高,我想使用Banker的序列来完成,因此先探索单例,然后研究配对,然后研究三元组再停止。 我没有找到一种方法,但是至少此循环应该更有效: 还有:但是k个嵌入式循环看起来很丑 问题答案: 即使k个嵌入式循环看起来很丑,这也应该是最有效的方法

  • 问题内容: 在Python 的列表中,以下代码给出此输出: 是否存在使用JavaScript中的数组执行此操作的简便方法? 我编写了以下函数来做到这一点,但是有没有更短或更短的东西呢? 问题答案: 您可以这样做: 它在每次迭代中将数组加倍,因此可以创建很少迭代的真正大数组。 注意:您还可以通过使用代替来改善您的功能,因为每次迭代都会创建一个新的数组。像这样(作为一个如何使用数组的示例显示):

  • 本文向大家介绍python numpy.power()数组元素求n次方案例,包括了python numpy.power()数组元素求n次方案例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 数组的元素分别求n次方。x2可以是数字,也可以是数组,但是x1和x2的列数要相同。 补充:python求n次方的函数_python实现pow函数(求n次幂,求n次方) 类型一:求n次幂 实现 pow(x,