我想将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>
]
我想要的是当我运行一些代码时,
我已经成功地创建了一个函数来完成前两部分,但在第三部分却被卡住了。我希望在JOOQ中有一个非常简单的“一行”,基本上做到了
delete
from my_table
where (first, last) not in (values ('Joe', 'Smith'), ('Mark', 'Taylor'))
但我无法计算出相应的Java代码来实现它。
有没有Jooq大师在读这篇文章?
有什么明显的事情我看过头了吗?
正如你所说的那样,删除主键更容易,这是一种很好的做法。只要没有两个叫皮特·琼斯的人,这样的事情就应该奏效:
dsl.deleteFrom(MY_TABLE)
.where(MY_TABLE.first.eq("pete").and(MY_TABLE.last.eq("jones")).execute();
您的查询可以转换为以下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()来构造行值表达式。请注意,行是PostgreSQL中的可选关键字。您恰好在SQL示例中省略了它。
另请参阅手册中关于度的IN
谓词的部分
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的数据库行已删除 我设法创建
我正在为一个SQL的实现工作,它应该在Where和Having子句之间使用联合操作来显示结果。例如, sql语句的目的是返回同时满足where和having条件的结果集。 resultset1<=select*from table1,其中col1='get';resultset2<=select*from table1 group by col2 avg(col3)>30 final result
问题内容: 我在Windows上工作。我想每10秒执行一次函数foo()。 我该怎么做呢? 问题答案: 在的末尾,创建一个在10秒后Timer调用自身的。 因为,Timer创建一个新的thread要调用。 你可以做其他事情而不会被阻止。
本文向大家介绍使用Iterator删除List中的多个元素操作,包括了使用Iterator删除List中的多个元素操作的使用技巧和注意事项,需要的朋友参考一下 今天在写代码时要删除List中的多个元素时犯了一个很搞笑的错误,等效的就是以下代码 运行后发现只能删除“1”这个元素,“2”删除不掉,后来才发现判断的时候如果第一个条件不满足,iterator.next()这个方法又会执行一遍,相当于已经不
运算操作是在Java代码中执行还是在Mysql的where子句中执行 假如age建立了索引,现在要对所有要查询的age进行一个加一操作,那么这个操作是放在Java代码中好还是SQL语句中好 放在SQL语句时的Mybatis代码 本来是觉得直接放在SQL语句中就行,但想着如果在where子句中进行表达式操作会造成索引失效,就在考虑
问题内容: 我是SSH和JSch的新手。当我从客户端连接到服务器时,我想做两个任务: 上传文件(使用) 执行命令,例如创建目录,以及搜索MySQL数据库 目前,我正在使用两个单独的Shell登录名来执行每个任务(实际上我还没有开始对MySQL查询进行编程)。 对于上传,相关代码为 而对于我的命令 我应该在第一个频道之后断开会话,然后再打开第二个频道吗?还是完全关闭会话并打开一个新会话?如我所说,我