0

私はLIVEデータベースに取り組んでいますが、現在の状況により、クエリをライブにしないとテストできません...悪いです...

基本的には単純な更新ですが、最新の一致した行のみを更新する必要があります。

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

基本的に、多くの「人」はいとことしてジェーンを持つことができます、私は最近の人の名前をボブに設定したいだけです。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 に答える