当前位置: 首页 > 面试题库 >

使用JOOQ进行删除,在``ot in''子句中指定多个列

邓建柏
2023-03-14
问题内容

我想将Postgres数据库表与Jooq记录列表同步。

我有一个包含复合主键和每行中其他三个值的表

table(k1, k2, v1, v2, v3)

例如,数据可能是

Last, First, Age, Weight, Height
Smith, Joe,  21,  75,     160
Jones, Pete, 23,  80,     180

(请使用名称作为主键的不良形式。。。)

我的Java代码中也有该表的Jooq记录列表。假设有两个Java记录

[
   <Smith, Joe, 21, 75, 180>,
   <Taylor, Mark, 54, 90, 170> 
]

我想发生的是当我运行一些代码时,

  • Joe Smith的数据库行的高度已更新
  • 将为Mark Taylor插入新行
  • Pete Jones的数据库行已删除

我设法创建了一个执行前两部分的功能,但是卡在了第三部分上。我希望在JOOQ中有一个非常简单的“一个班轮”,基本上

delete 
from my_table 
where (first, last) not in (values ('Joe', 'Smith'), ('Mark', 'Taylor'))

但我无法计算出相应的Java代码来做到这一点。

有任何Jooq大师在阅读此书吗?

我有明显的事情要注意吗?


问题答案:

您的查询可以转换为以下jOOQ代码:

// Assuming this:
import static org.jooq.impl.DSL.*;

using(configuration)
   .deleteFrom(MY_TABLE)
   .where(row(MY_TABLE.FIRST, MY_TABLE.LAST).notIn(
        row("Joe", "Smith"),
        row("Mark", "Taylor")
   ))
   .execute();

DSL.row()用于构造行值表达式。请注意,这ROW是PostgreSQL中的可选关键字。您只是在您的SQL示例中忽略了它。

另请参见手册中有关IN度数大于1的谓词的部分:

http://www.jooq.org/doc/latest/manual/sql-building/conditional-
expressions/in-predicate-degree-n



 类似资料:
  • 我想将postgres数据库表与Jooq记录列表同步。 我有一个表,每行有一个复合主键和三个其他值 例如,数据可能是 (请原谅将名称用作主键的糟糕形式……) 在java代码中,我还有一个该表的Jooq记录列表。假设有两个java记录 我想要的是当我运行一些代码时, Joe Smith的数据库行的高度已更新 为Mark Taylor插入新行 删除了Pete Jones的数据库行 我已经成功地创建了一

  • 有没有办法在Firebase中执行原子删除? 医生说 您还可以通过将nil指定为另一个写入操作(如setValue或updateChildValues)的值来删除。。。以这种方式进行的同步更新是原子性的:要么所有更新都成功,要么所有更新都失败。 但我无法让它工作。我下面的代码返回错误 无法在处存储类型为\u SwiftValue的对象。只能存储NSNumber、NSString、NSDiction

  • 本文向大家介绍使用MySQL WHERE子句中的多个值进行更新,包括了使用MySQL WHERE子句中的多个值进行更新的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是使用WHERE子句中的多个值更新的查询- 让我们再次检查表记录- 这将产生以下输出-

  • 我正在学习MapReduce,我想读取一个输入文件(逐句)并将每个句子写入一个输出文件,前提是它不包含单词“snake”。 例如。输入文件: 则输出文件应为: 为此,我在< code>map方法中检查句子(< code>value)是否包含单词snake。如果句子中不包含snake单词,那么我将在< code>context中书写该句子。 此外,我将化简器任务的数量设置为0,否则在输出文件中,我以

  • 我有一个表订阅,我想在一个连接中用JOOQ编写多个selectCount,并用不同的谓词连接到数据库。为此,我创建了一个查询列表: 最后,我使用批处理启动了这个查询列表: 我原本希望在执行的返回值中包含上述查询的结果,但我得到了一个整数数组,其中填充了0个值。 这是使用JOOQ运行多个的正确方法吗?方法返回的整数数组的含义是什么? 我在JOOQ博客中查看了这个链接,讨论了“如何在一个查询中计算多个

  • 我在表,中有两列,它们都是唯一的索引(col1是唯一的,col2也是唯一的)。 我需要在插入到这个表,使用语法和更新其他列,但我不能在子句中使用这两个列。 它的工作原理: 但是如何在几个列中做到这一点,就像这样: