JDBC使用UPDATE FROM状态

时间:2015-02-27 02:11:03

标签: sql tomcat jdbc derby

我正在尝试使用我拥有的另一个表中的值来更新其中一个表中的记录。

在查找之后,我看到UPDATE FROM STATE应该解决问题,但在尝试后我得到了错误:

  

语法错误:在第1行第67行遇到“FROM”。

我的表格(相关领域):

  

表用户:STRING nickName FLOAT logFollwers

     

TABLE POSTS:STRING作者FLOAT logRepub FLOAT流行度

我的SQL查询:

UPDATE POSTS SET popularity = POSTS.logRepub * USERS.logFollowers 
FROM POSTS INNER JOIN USERS ON POSTS.author=USERS.nickName

我希望这是所有需要的信息。 谢谢你的帮助。

编辑:尝试过:

UPDATE POSTS SET popularity= (SELECT POSTS.logRepub * USERS.logFollowers FROM POSTS INNER JOIN USERS ON POSTS.author=USERS.nickName)

得到了错误:

  

“标量子查询只允许返回一行。”

调用executeUpdate();

1 个答案:

答案 0 :(得分:1)

这样的事情应该这样做:

UPDATE POSTS 
  SET popularity = logRepub * (SELECT u.logFollowers
                               FROM users u 
                               where u.username = posts.author);

您不需要在子选择中加入,您只需要一个共同相关的子选择。

您说usernameusers表的PK,但您的示例使用列nickname。如果昵称不是唯一的,则不能将其用作共同相关的子查询。