5

こんにちは、jooqでこのようなものを書く方法を見つけようとしています

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

jooq でネストされた条件を実行する方法がわかりません。助けてください。

4

1 に答える 1

10

API の次の部分を理解する必要があります。

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

したがって、いずれも/メソッド (およびその他)を使用Conditionして他のものと接続できます。あなたの場合、次のように条件を簡単に形成できます。Conditionsand()or()

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/

于 2012-06-29T13:21:59.890 に答える