java - 链接和组合 Jooq 命令

标签 java mysql sql jooq

我有这样的查询:

  1. 选择一行
  2. 使用上一行中的值创建行(有超过 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/

相关文章:

sql - 合并与案例

java - 如何使用java启动服务器?

java - 如何将我的 RESTful 应用程序部署到 Apache 服务器?

关于字符串操作的 Java 问题 - 反转文本将 "null"添加到末尾

MySQL 似乎忽略了日期时间列上的索引

java - 在java中将MySQL数据库转换为SQLite单个文件

java - 如何在 ViewPager 中均匀分布选项卡?

mysql - 长时间运行的查询问题

mysql - SQL/Knime - 带 "Group By"的转置表

sql - 如何在 SQL Management Studio 中轻松编辑 SQL XML 列