如何选择仅更新某些行的整个表?

时间:2015-09-01 15:26:49

标签: sql postgresql

我在使用PostgreSQL 9.4.4。

我有一个用于存储聊天记录的表messages。当用户收到每条消息时,其字段read设置为1。

当客户端请求所有消息时,我希望SELECT * FROM messagesUPDATE messages SET read = 1仅限某些行(其中user_id不等于请求者的ID)。

此查询仅返回更新的行,因此这不是我要查找的内容。

UPDATE messages SET read = 1 WHERE user_id != $1 RETURNING *;

有没有办法通过单个查询执行此操作?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

那么,如果你把你的查询结合起来怎么样呢

UPDATE messages SET read = 1 WHERE user_id != $1;select * from messages;

那么,在这种情况下,请考虑将查询包装在存储过程中并从后面的node.js代码中调用,如下所示[**注意:它是一个示例proc代码,并且每个postgresql可能没有完全相似的语法]

create procedure sp_updatedata (parameter int)
as
begin
UPDATE messages SET read = 1 WHERE user_id != parameter;
select * from messages;
end