我有如下表:SQL:如何刪除基於一個條件,從表中的行
tbl
source type date
--- --- ---
google A 2010-02-25
google A 2013-04-11
facebook C 2008-10-22
facebook C 2007-01-28
我想只保留每個源的一個條目,而標準是選擇具有min(date) group by source
源元組。該表由數百萬條記錄組成,我正在尋找刪除多餘記錄的有效方法。 - 離手 - 這是我能想到的,使這個更有效的是將聚集結果存儲在一個子查詢
delete t
from t join
(select source, min(date) as mindate
from t
group by source
) tt
on t.source = tt.source
where t.date > tt.mindate;
的唯一方法:
該表是否有任何唯一的標識符(即主鍵,ID字段等)? –
@ChrisJ nah,它沒有。 – SaadH