JDBC 使用 UPDATE FROM 状态

JDBC Using an UPDATE FROM state

我正在尝试使用我拥有的另一个 table 的值更新我的 table 之一的记录。

查找后,我发现 UPDATE FROM STATE 应该可以解决问题,但尝试后出现错误:

Syntax error: Encountered "FROM" at line 1, column 67.

我的tables(相关字段):

TABLE USERS: STRING nickName FLOAT logFollwers

TABLE POSTS: STRING author FLOAT logRepub FLOAT popularity

我的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)

得到错误:

"Scalar subquery is only allowed to return a single row."

调用executeUpdate()时;

应该这样做:

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

子select中不需要join,只需要关联子select。

你说 usernameusers table 的 PK,但是你的示例使用了列 nickname。如果昵称不唯一,则不能用作相关子查询。