JOOQ - 用表达式更新语句
JOOQ - Update Statement with Expression
在 PostgreSQL 中,您可以使用能够利用给定行的列值的表达式来定义 set 语句中的值,即
UPDATE some_table
SET col_a = (col_b != 1)
WHERE col_c = 'some val'
有没有办法在 JOOQ 中做到这一点? - 我查看了 JOOQ 文档,但看不到任何参考资料
关注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"));
我假设 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();
在 PostgreSQL 中,您可以使用能够利用给定行的列值的表达式来定义 set 语句中的值,即
UPDATE some_table
SET col_a = (col_b != 1)
WHERE col_c = 'some val'
有没有办法在 JOOQ 中做到这一点? - 我查看了 JOOQ 文档,但看不到任何参考资料
关注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"));
我假设 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();