2012-07-29 57 views
0

我搞亂了我的數據庫中的幾個表,結果類似但鍵不同。 的結果是這樣的:MySQL使用不同的鍵刪除重複項

1 |2 |3 
5 |25 |25 
6 |25 |25 
7 |31 |31 
8 |31 |31 

我想刪除這些重複的行,這樣的結果是這樣的:

1 |2 |3 
5 |25 |25 
7 |31 |31 

我想SELECT * DISTINCT 2 FROM TABLE,但沒有奏效。對不起,我不能說得更好!

回答

0

嘗試

delete from your_table 
where id not in (
       select * from (select min(id) from your_table 
           group by col2, col3) 
       t_alias 
       ) 

SQLFiddle example

+0

這難道不是假定列2和3總是相同的? – 2012-07-29 17:41:10

+0

注意:如果col2恰好爲NULL,那麼「NOT IN(...)」會做出令人討厭的事情。 – wildplasser 2012-07-29 17:41:47

+0

@jon:你說得對。我向組 – 2012-07-29 17:42:59

0
DELETE FROM the_table dt 
WHERE EXISTS (SELECT * 
    FROM the_table ex 
    WHERE ex.col2 = dt.col2 
    AND ex.col3 = dt.col3 
    AND ex.id < dt.id 
    );