我需要使用从另一个表中删除的值来更新表格。情况类似于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
或 -1
。
WITH
语句可以在一个语句中完成如此多的操作,真是太神奇了。 - danneu