【问题标题】:Use a jooq condition with IN clause使用带有 IN 子句的 jooq 条件
【发布时间】:2016-05-07 14:16:54
【问题描述】:

假设我有 2 个参数,firstnamelastname;至少设置了一个。

我想做的是构造一个 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语句中使用条件

【问题讨论】:

    标签: java sql jooq


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2013-01-05
      • 2021-08-28
      • 1970-01-01
      • 2017-08-23
      • 2018-01-01
      • 2021-02-19
      • 1970-01-01
      相关资源
      最近更新 更多