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。
你说 username
是 users
table 的 PK,但是你的示例使用了列 nickname
。如果昵称不唯一,则不能用作相关子查询。
我正在尝试使用我拥有的另一个 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。
你说 username
是 users
table 的 PK,但是你的示例使用了列 nickname
。如果昵称不唯一,则不能用作相关子查询。