JOOQ 删除并加入
Posted
技术标签:
【中文标题】JOOQ 删除并加入【英文标题】:JOOQ delete with join 【发布时间】:2021-03-30 15:29:42 【问题描述】:如何编写 JOOQ 删除查询以加入来自 with
子句的字段?有可能吗?
我有一个正在运行的 SQL 查询,但我不知道如何将其转换为 JOOQ。
这是我的查询:
with "temp" as (
select field1 as field1
from "table"
join ("table2")
on (table.field1 = table2.field2)
)
delete from table using temp
where table.field1 = temp.field1;
我试过了:
transactionDSLContext.with("temp")
dsl.as(
select(TABLE.FIELD1.as("field1"))
.from(TABLE)
.join(TABLE2)
.on(TABLE.FIELD1.eq(TABLE2.FIELD2))
)
.delete(TABLE)
.where(TABLE.FIELD1.eq((Field<String>) temp.field("field1"))
.execute();
但我得到了:
ERROR: missing FROM-clause entry for table "temp"
【问题讨论】:
【参考方案1】:你忘记了using
子句:
.delete(TABLE).using(temp)
我假设您有一个局部变量 temp
,您在其中分配了您的 CommonTableExpression
...
【讨论】:
我没有它作为一个选项...只有 delete(TABLE).where(...) 嗯,它是在 jOOQ 3.13 中添加的:jooq.org/api-diff/3.12-3.13以上是关于JOOQ 删除并加入的主要内容,如果未能解决你的问题,请参考以下文章
加入 jOOQ 时无法获取我的 SpeakerRecord 实体