微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JOOQ delete with join

如何解决JOOQ delete with join

如何编写 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"

解决方法

您忘记了 using 子句:

.delete(TABLE).using(temp)

我假设您有一个局部变量 temp,您在其中分配了 CommonTableExpression...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。