假设我有2个参数, firstname 和 lastname ;其中至少有一个已经确定。
我想要做的是构建一个 jooq 查询,用 firstname 和/或 lastname 删除一些记录(来自表)存储在另一个表中。 所以基本上我有三种可能性:
DELETE FROM table1
WHERE table1.id IN
(SELECT id FROM table2 WHERE table2.firstname LIKE 'fname');
DELETE FROM table1
WHERE table1.id IN
(SELECT id FROM table2 WHERE table2.lastname LIKE 'lname');
DELETE FROM table1
WHERE table1.id IN
(SELECT id FROM table2 WHERE table2.firstname LIKE 'fname' AND table2.lastname LIKE 'lname');
知道如何使用 jooq条件吗? 我总是可以执行2个查询(一个用于从table2中选择ID,另一个用于删除),但我想一步完成。
感谢。
LE 我想用jooq在Java代码中表达这些语句:首先创建一个 jooq条件,具体取决于设置的参数,然后使用 delete 语句中的条件
答案 0 :(得分:1)
假设:
import static org.jooq.impl.DSL.*;
写:
Condition condition = falseCondition();
if (firstnameIsSet)
condition = condition.or(TABLE2.FIRSTNAME.like(firstname));
if (lastnameIsSet)
condition = condition.or(TABLE2.LASTNAME.like(lastname));
DSL.using(configuration)
.deleteFrom(TABLE1)
.where(TABLE1.ID.in(
select(TABLE2.ID)
.from(TABLE2)
.where(condition)
))
.execute();