清风如月

洗衣做饭,样样会干。上得厅堂,下得卧房,通得了厕所,打得死蟑螂,写得了代码,补得了裤衩~~~

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
DELETE FROM test WHERE id NOT IN ( 
SELECT id AS id FROM (
 SELECT MIN(id) AS id #和外边的条件使用一样的名字
 FROM test GROUP BY NAME 
) AS t #嵌套出来的子查询都会生成一个派生表,而MYSQL规定派生表必须有一个别名
);


另外网上有这种:

#删除重复记录
#通过使用rowid来作为过滤条件,性能高效                                               
DELETE FROM emp e                                                                     
WHERE  e.ROWID > (SELECT MIN( x.ROWID )     
                  FROM   emp x                                                       
                  WHERE  x.empno = e.empno); 

这种方法在MYSQL是不行的,因为mysql规定删除动作不能带有本表的查询动作

posted on 2013-05-07 18:33  清风如月  阅读(186)  评论(0编辑  收藏  举报