更新并在单个查询中选择。 Scala

时间:2018-02-14 09:58:51

标签: mysql sql scala sql-update

我正在尝试使用以下查询查询数据库。当我在mysql服务器中运行查询时,它工作正常。但是当我在scala中运行相同的查询时,它会抛出错误。

我想在db中获得一行,其cid_status是"未保留"并且cid_curprocess是' process1'并将相同的cid_status更新为" reserved"并返回该行的cid_issueid

以下是查询。

  

val query =" SET @LastUpdateID:= 0; UPDATE table_details INNER JOIN   (SELECT cid_issueid FROM cen_issue_details WHERE   cid_curprocess ='过程1' AND cid_status ='未保留'限制1)AS   final ON cen_issue_details.cid_issueid = final.cid_issueid SET   cen_issue_details.cid_status ='保留',cen_issue_details.cid_issueid   =(SELECT @LastUpdateID:= cen_issue_details.cid_issueid); SELECT @LastUpdateID AS LastUpdateID;

val rs = statement.executeUpdate(query)

我收到以下错误:

线程中的异常" main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在&JOD; UPDATE table_details INNER JOIN附近使用正确的语法(SELECT cid_issueid FROM cen_issue_details W&#​​39; at line 1

此外,我不确定是否使用executeUpdate或executeQuery,因为查询同时执行SELECT和UPDATE。

1 个答案:

答案 0 :(得分:1)

Statement.executeupdate(String)只接受一个声明,但您提供了两个。

请参阅https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String)

上的文档

此问题讨论了使用JDBC在单个往返中执行多个语句的选项:Two different prepared statements in one single batch