使用 jooq 的子查询更新 postgres 中的 table 行
updating table rows in postgres using subquery with jooq
我想像这样执行和更新:
UPDATE dummy
SET customer=subquery.customer,
address=subquery.address,
partn=subquery.partn
FROM (SELECT address_id, customer, address, partn
FROM dummy) AS subquery
WHERE dummy.address_id=subquery.address_id;
取自这个答案:
我找到了 this 并想知道这是否可以自动转换为 jooq 流利语法。
什么是等效的 jooq 查询?具体来说,如何在引用子查询时执行外部?
假设您正在使用代码生成,请按如下方式进行:
Table<?> subquery = table(
select(
DUMMY.ADDRESS_ID,
DUMMY.CUSTOMER,
DUMMY.ADDRESS,
DUMMY.PARTN
)
.from(DUMMY)
).as("subquery");
ctx.update(DUMMY)
.set(DUMMY.CUSTOMER, subquery.field(DUMMY.CUSTOMER))
.set(DUMMY.ADDRESS, subquery.field(DUMMY.ADDRESS))
.set(DUMMY.PARTN, subquery.field(DUMMY.PARTN))
.from(subquery)
.where(DUMMY.ADDRESS_ID.eq(subquery.field(DUMMY.ADDRESS_ID)))
.execute();
当然,查询是没有意义的,因为您只是要触摸每一行而不修改它,但是由于您从另一个答案复制了 SQL,我假设您的子查询是dummy
table 真是另类。
我想像这样执行和更新:
UPDATE dummy
SET customer=subquery.customer,
address=subquery.address,
partn=subquery.partn
FROM (SELECT address_id, customer, address, partn
FROM dummy) AS subquery
WHERE dummy.address_id=subquery.address_id;
取自这个答案:
我找到了 this 并想知道这是否可以自动转换为 jooq 流利语法。
什么是等效的 jooq 查询?具体来说,如何在引用子查询时执行外部?
假设您正在使用代码生成,请按如下方式进行:
Table<?> subquery = table(
select(
DUMMY.ADDRESS_ID,
DUMMY.CUSTOMER,
DUMMY.ADDRESS,
DUMMY.PARTN
)
.from(DUMMY)
).as("subquery");
ctx.update(DUMMY)
.set(DUMMY.CUSTOMER, subquery.field(DUMMY.CUSTOMER))
.set(DUMMY.ADDRESS, subquery.field(DUMMY.ADDRESS))
.set(DUMMY.PARTN, subquery.field(DUMMY.PARTN))
.from(subquery)
.where(DUMMY.ADDRESS_ID.eq(subquery.field(DUMMY.ADDRESS_ID)))
.execute();
当然,查询是没有意义的,因为您只是要触摸每一行而不修改它,但是由于您从另一个答案复制了 SQL,我假设您的子查询是dummy
table 真是另类。