• ベストアンサー

あるカラムに同じ値を持つレコードの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レコードを削除したい。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

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のレコードを削除します。 やりたいことと違うようであれば、もう少し具体的に条件を提示してください。

yayaman6437
質問者

お礼

お礼が遅くなり失礼しました。ご回答いただいたSQLを実際に実行し、「exists」の解説を調べ理解できました。ありがとうございました。

その他の回答 (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 )

yayaman6437
質問者

お礼

お礼が遅くなり失礼しました。ご回答いただいたSQLを実際に実行し、「exists」の解説を調べ理解できました。ありがとうございました。

noname#212058
noname#212058
回答No.1

使用しているデータベースの製品によって書き方が変わります。 データベースがわからないと回答できません。