2012-02-21

【SQL】刪除資料表中重覆的資料列

有時在存資料時,並不用很在意是否己經有同樣的值存在。
例如我有一個Table 是用來記cache 的key。
重覆也沒關系,反正我抓出來時可以做distinct,
但重點是一定要有存,不然怎麼抓出來砍key。
而且如果每次寫入時都要判斷是否存在,還蠻浪費效能的。

可是Table 中太多重覆的資料,也有點浪費空間,可能還會影響Select 的效能。
所以還是偶而去砍掉重覆的資料吧。
方法如下:

查出沒有重覆的資料
select max(id) from cache_key group by key;

刪除重覆的資料列
delete from cache_key where id not in (select max(id) from cache_key group by key);

搞定。



0 comments:

張貼留言