UPDATE some_table
SET col_a = (col_b != 1)
WHERE col_c = 'some val'
有没有在JOOQ中实现这个的方法?- 我查看了JOOQ文档,但是我没有找到任何相关的参考。
UPDATE some_table
SET col_a = (col_b != 1)
WHERE col_c = 'some val'
有没有在JOOQ中实现这个的方法?- 我查看了JOOQ文档,但是我没有找到任何相关的参考。
我假设col_a是一个Field<Boolean>类型的字段。如果是这种情况,你可以使用DSL.field(Condition)方法将一个Condition包装在一个Field<Boolean>表达式中。
// As always, assuming you have this static import:
import static org.jooq.impl.DSL.*;
ctx.update(SOME_TABLE)
.set(SOME_TABLE.COL_A, field(SOME_TABLE.COL_B.ne(1)))
.where(SOME_TABLE.COL_C.eq("some val"))
.execute();
根据https://www.jooq.org/doc/3.13/manual/sql-building/sql-statements/update-statement/#N6ABB6,我认为你可以这样做
update(SOME_TABLE)
.set(row(SOME_TABLE.A),
row(SOME_TABLE.B.neg()))
.where(SOME_TABLE.C.eq("some val"));