[PHP-users 24017] 自分のテーブルのローを削除したい。
渡辺 伸雄
watanove @ nifty.ne.jp
2004年 12月 28日 (火) 17:20:46 JST
渡辺です。いつも、参考にさせて頂いています。
会員Noと登録時刻が入っているテーブルがあり、
1つの会員Noについて複数の登録時刻が登録可能です。
そのテーブルの各会員の最新の登録時刻以外のローを削除したいのです。
テーブルXにmemberIDとAssignTimeがあるとします。
X
memberID AssignTime
1 2004/12/28 17:00:00
1 2004/12/28 18:00:00
2 2004/12/28 17:50:00
この中で最初のローだけを削除したいのです。
deleteした結果は
X
memberID AssignTime
1 2004/12/28 18:00:00
2 2004/12/28 17:50:00
としたいのです。
で、思いついたSQLが次のSQLなのですが、
何か反則気味な感じがします。
delete from X
where not oid in (select x2.oid from
(select max(AssignTime) as ma,memberid from x)x1
join
x x2
on x1.memberid=x2.memberid and x1.ma=x2.assigntime);
oidを使うのは良くない気がしますし、
カーソルなどを使うのでしょうか?
もっと、さっぱりした方法を知りたいのですが。
よろしくお願いします。
PHP-users メーリングリストの案内