更新查询,LIMIT和RETURNING命令

时间:2013-01-09 16:47:21

标签: sql postgresql syntax updates

我正在使用LIVE数据库,并且由于目前的情况,无法在不将其置于现场的情况下测试查询...我知道... ...

基本上它是一个简单的更新,但我只希望它更新最新匹配的行:

UPDATE person SET name = 'bob' WHERE cousin = 'jane' ORDER BY id DESC
LIMIT 1 RETURNING id

基本上,很多“人”都可以把简当作堂兄,我只想把最近一个人的名字设定为bob。我只是不确定LIMIT和RETURNING子句。它们的顺序是否合适?或者你甚至可以一起使用LIMIT和RETURNING吗?

1 个答案:

答案 0 :(得分:2)

UPDATE person
SET name = 'bob'
WHERE id = (
    select max(id)
    from person
    where cousin = 'jane'
    )
RETURNING id;

您可以先启动一项交易来测试它:

begin;

UPDATE person
SET name = 'bob'
WHERE id = (
    select max(id)
    from person
    where cousin = 'jane'
    )
RETURNING id;

现在选择结果:

select *
from person
where id = id_returned_in_the_above_query;

如果正确则提交:

commit;

其他回滚:

rollback;