我正在使用LIVE数据库,并且由于目前的情况,无法在不将其置于现场的情况下测试查询...我知道... ...
基本上它是一个简单的更新,但我只希望它更新最新匹配的行:
UPDATE person SET name = 'bob' WHERE cousin = 'jane' ORDER BY id DESC
LIMIT 1 RETURNING id
基本上,很多“人”都可以把简当作堂兄,我只想把最近一个人的名字设定为bob。我只是不确定LIMIT和RETURNING子句。它们的顺序是否合适?或者你甚至可以一起使用LIMIT和RETURNING吗?
答案 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;