0

我正在开发一个 LIVE 数据库,由于目前的情况,无法在不将其上线的情况下测试查询...糟糕我知道...

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

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

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

4

1 回答 1

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;
于 2013-01-09T16:55:42.680 回答