【问题标题】:JOOQ nested conditionJOOQ 嵌套条件
【发布时间】:2012-06-30 03:49:33
【问题描述】:

你好,我想弄清楚如何在 jooq 中写这样的东西

select * from table 
where ( ( a = query or b = query or a = query ) 
and ( e = query or g = query or z = query) )

我不知道如何在 jooq 中执行嵌套条件。请帮忙。

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    您需要了解 API 的以下部分:

    public interface Condition {
        Condition and(Condition other);
        Condition or(Condition other);
    }
    

    因此,任何Condition 都可以使用and() / or() 方法(和其他方法)与其他Conditions 连接。在您的情况下,您可以像这样轻松地形成您的条件:

    Condition c1 = a.equal(query);
    Condition c2 = b.equal(query);
    Condition c3 = a.equal(query);
    
    Condition d1 = e.equal(query);
    Condition d2 = g.equal(query);
    Condition d3 = z.equal(query);
    

    现在这些条件可以这样连接:

    c1.or(c2).or(c3).and(d1.or(d2).or(d3));
    

    或者放入SQL语句:

    create.select()
          .from(table)
          .where(c1.or(c2).or(c3)
            .and(d1.or(d2).or(d3)));
    

    当然,您不必将c[1-3], d[1-3] 条件分配给变量。您可以将所有内容内联到单个语句中:

    create.select()
          .from(table)
          .where(a.equal(query).or(b.equal(query)).or(a.equal(query))
            .and(e.equal(query).or(g.equal(query)).or(z.equal(query)));
    

    您可以在手册中找到更多信息:

    https://www.jooq.org/doc/latest/manual/sql-building/conditional-expressions/

    【讨论】:

      猜你喜欢
      • 2014-07-19
      • 2016-05-22
      • 1970-01-01
      • 2019-08-09
      • 2020-08-28
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多