- - PR -
古いレコードを複数削除
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 .... |
|
投稿日時: 2008-11-05 23:14
delete xxx
where 主キー in ( select 主キー from ( select 主キー from xxx order by 並び替え条件 desc ) where rownum < 11 ) または主キーをrowidにする。 |
|
投稿日時: 2008-11-06 01:06
有難う御座います!
inを使って複数指定が可能だと理解できました。 おかげでORDER BYとLIMITの組み合わせで上手く行かない理由が分かりました! 主キーを持たないテーブルも存在するため、rowidを利用した方法も試してみます。 有難う御座いました。 |
1