我需要使用从另一个表中删除的值来更新一个表。这种情况是类似于 SO 的评论投票记分员。我正在使用 python 来处理 postgres,但这不应该有所作为。
query="""
UPDATE comment SET score=score-(DELETE FROM history
WHERE commentId=%(commentId)s AND
userIdentity=%(userIdentity)s RETURNING vote)
WHERE commentId=%(commentId)s;
"""
cursor.execute(query, data)
错误出现在(DELETE FROM
; 出现语法错误。我可以用DELETE
声明替换SELECT
声明,它会起作用,这里有什么我遗漏的吗?我想在更新中使用返回值。这可能吗?任何事情都有帮助。
相关架构:
CREATE TABLE history (
commentId bigint,
vote int,
userIdentity varchar(256),
);
CREATE TABLE comment (
id bigint,
score bigint,
);
history.vote 通常是1
or -1
。