【问题标题】:Oracle update with join in execute update jspOracle 更新与加入执行更新 jsp
【发布时间】:2019-07-01 03:46:18
【问题描述】:

我想通过检查table1 的column2 和table2 的column2 的条件来更新table1 的column1。

我只是得到缺少右括号的错误。

我只是检查两个表的 ID(ID 是另一个表的外键)并检查激活码是否来自查询字符串,如果它们匹配,我只是将状态的值更新为批准

String s = "Approve";
stmt.executeUpdate("UPDATE  
                                   ( SELECT Approval.STATUS AS st 
                                       FROM Approval 
                                       JOIN Activity 
                                         ON Activity.userid = Approval.id 
                                      WHERE Activity.activationcode = 
                                           '"+activationcode+"') as up SET up.st = '"+s+"'");

【问题讨论】:

    标签: java oracle jsp


    【解决方案1】:

    用下面替换你的更新表字符串,它应该可以工作

    UPDATE 
     (SELECT 
        Approval.STATUS AS st 
      FROM 
        Approval JOIN Activity ON Activity.userid = Approval.id 
      WHERE 
        Activity.activationcode = '"+activationcode+"'
     ) up
    SET up.st = '"+s+"'
    

    在您的查询中,您尝试更新 APPROVAL 和 UP 表,这就是您收到错误的原因

    【讨论】:

    • 你能发布错误堆栈跟踪吗?这个查询应该可以工作,所以我不确定为什么它不适合你。尝试将变量替换为硬编码值,仅用于测试目的,并编写一个简单的更新语句。
    • 我在 Oracle 命令行中尝试了这个查询,它在那里工作正常。但是当我在 jsp 中执行这个查询时,它会给出一个错误,如:00907 缺少右括号
    • 除了您在上面发布的内容之外,您确定没有在您的 JSP 页面上与此查询连接任何内容吗?您可以尝试编写一个简单的语句,例如update approval set status = '1' where userid = '123',看看它是否适用于您的 JSP 页面
    • 是的.. 我没有添加任何内容。是的,当我输入自定义值时它正在工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2016-05-08
    相关资源
    最近更新 更多