2

重複の可能性:SQL-重複
する行を削除するにはどうすればよいですか?

次のような構造のテーブルがあります。

create table MnA
(id         int PRIMARY KEY IDENTITY    not null,
symbol      nvarchar(4)                 not null,
direction   nvarchar(4)                 not null,
start_dt    nvarchar(5)                 not null,
end_dt      nvarchar(5)                 not null,
start_doy   int                         not null,
end_doy     int                         not null,
avg_price   int                         not null,
min_price   int                         not null,
max_price   int                         not null,
avg_percent int                         not null,
min_percent int                         not null,
max_percent int                         not null,
history     text                        not null,
percent_hit int                         not null,
aw_length   int                         not null,
diff        int                         not null,
date_change int                         not null)

類似している行を削除したいのですが。

行が同じsymbol, direction, start_doydiff、最も高い行を保持したい場合avg_percent

どうすればこれを達成できますか?

4

1 に答える 1

4
DELETE target 
FROM MnA target INNER JOIN MnA temp 
     ON (target.symbol = temp.symbol 
         AND target.direction = temp.symbol
         AND target.start_doy = temp.start_doy
         AND target.diff = temp.diff
         AND target.id != temp.id 
         AND temp.avg_percent > target.avg_percent);

デモ(sqlfiddle)。

于 2012-08-21T22:47:17.113 に答える