準備
テーブルの作成
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 );
参考
PostgreSQL なら ctid を使えるかもしれませんが、本来は id を持たせるべきでしょうね…。
http://dbnote.web.fc2.com/note_datatype_systemcol1_oid_and_ctid.html
回答2件
あなたの回答
tips
プレビュー