我有这样的查询:
- 选择一行
- 使用上一行中的值创建行(有超过 1 个值)。
从技术上讲,可以在一个 SQL 请求中表达,但是 使用 jooq,应用程序和数据库服务器之间将有一个有值(value)的往返。
jooq.select(TABLE_A.FIELD_A, TABLE_A.FIELD_B).from(TABLE_A)
.where(TABLE_A.ID.eq(id))
.fetchOne().map(r ->
jooq.insertInto(AUDIT)
.columns(AUDIT.FIELD_A, AUDIT.FIELD_B)
.values(r.value1(), r.value2()).execute())
select field_a, field_b into @a, @b from TABLE where ID = ?;
insert into AUDIT (field_a, field_b) values(@a, @b);
这是一个演示查询。我对帮助进行组合的工具感兴趣,而不是对特定查询的变通方法感兴趣。
最佳答案
jOOQ 支持INSERT .. SELECT
。你不应该在这两个语句之间有客户端往返,而是这样写:
SQL:
insert into AUDIT (FIELD_A, FIELD_B)
select FIELD_A, FIELD_B from TABLE where ID = ?;
Java:
jooq.insertInto(AUDIT, AUDIT.FIELD_A, AUDIT.FIELD_B)
.select(DSL.select(TABLE.FIELD_A, TABLE.FIELD_B)
.from(TABLE)
.where(TABLE.ID.eq(id)))
.execute();
关于java - 链接和组合 Jooq 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42855002/