2012-07-29 29 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 
    );