- PR -

古いレコードを複数削除

1
投稿者投稿内容
レイル
常連さん
会議室デビュー日: 2008/10/14
投稿数: 37
投稿日時: 2008-11-05 22:40
お世話になります。

データベースはOracle10gとなります。

下記テーブルが存在しており、最新の10件以外の全レコードにDELETEFLAGを立てたいと考えており行き詰っています。
ORDER BYのDESCで降順でソート後、10件をリミットに削除を行おうと考えておりますが、
想定している動作を行えません。
申し訳ありませんが、ご教授頂ければ幸いです。

ID COL LASTUPDATE DELETEFLAG
-------------------------------------
1 A 2008-11-05 00:00:00 0
2 B 2008-11-05 00:01:00 0
3 B 2008-11-05 00:02:00 0
....

deanna
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 118
投稿日時: 2008-11-05 23:14
delete xxx
where
主キー in ( select 主キー from ( select 主キー from xxx order by 並び替え条件 desc ) where rownum < 11 )
または主キーをrowidにする。
レイル
常連さん
会議室デビュー日: 2008/10/14
投稿数: 37
投稿日時: 2008-11-06 01:06
有難う御座います!

inを使って複数指定が可能だと理解できました。

おかげでORDER BYとLIMITの組み合わせで上手く行かない理由が分かりました!

主キーを持たないテーブルも存在するため、rowidを利用した方法も試してみます。

有難う御座いました。

1

スキルアップ/キャリアアップ(JOB@IT)