PostgreSQL INによるサブクエリについて

準備

テーブルの作成

CREATE TABLE test (id1 TEXT, id2 TEXT, id3 TEXT, data TEXT);

適当なデータを数件入れておく。

SQLでの期待処理

id1='A' AND id2='B' AND id3='C' AND data=''
のデータのうち最大5件のdataを'ABC'にする。
(データ抽出順番は制約なし。)

質問

上記の期待処理をするときに、LIMITというのを使って件数を制限すること、UPDATEではLIMITを使えないためサブクエリのSELECTでLIMITを使うことを知りました。
ネット記事を参考にSQLを作ろうと思ったのですが、下記SQLの???に何を指定してよいか分かりません。

テーブルに設定している主キーでしょうか?
主キーを設定していない場合、何を設定すればよいでしょうか?(id1, id2, id3)でしょうか。

回答よろしくお願いします。

UPDATE test SET data = 'ABC' WHERE ??? IN( SELECT ??? FROM test WHERE id1 = 'A' AND id2 = 'B' AND id3 = 'C' AND data = '' LIMIT 5 );

参考

Update文にてORDER BY句とLIMIT句を使いたくなった。

コメントを投稿

0 コメント