- ベストアンサー
あるカラムに同じ値を持つレコードの2件目以降を削除
あるカラムに同じ値を持つレコードの2件目以降を削除するSQLを教えて下さい。 例) テーブル名:T キーカラム名:K 同じ値を持つかチェックするカラム名:S SELECT K,S FROM T; K S ---- 1 a 2 b 3 b 4 c 5 d 6 e 7 e 上記の場合、K=2または3と、K=6または7の2レコードを削除したい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
2件目以降とはどういう条件で判断するのでしょうか。 >K=2または3と、K=6または7 とありますが、Sが重複しているレコードのうちどれでもいいということですか? とりあえず、Sが重複していてKが一番小さいレコードのみを残すSQLであれば delete from T a where exists ( select * from T b where a.S = b.S and a.K > b.K); という感じになると思います。 提示のデータであれば、Kが3、7のレコードを削除します。 やりたいことと違うようであれば、もう少し具体的に条件を提示してください。
その他の回答 (2)
- nora1962
- ベストアンサー率60% (431/717)
回答No.3
delete from T where exists ( select 1 from T T2 where T.K>T2.K and T.S=T2.S )
質問者
お礼
お礼が遅くなり失礼しました。ご回答いただいたSQLを実際に実行し、「exists」の解説を調べ理解できました。ありがとうございました。
noname#212058
回答No.1
使用しているデータベースの製品によって書き方が変わります。 データベースがわからないと回答できません。
お礼
お礼が遅くなり失礼しました。ご回答いただいたSQLを実際に実行し、「exists」の解説を調べ理解できました。ありがとうございました。