如何删除数据库中重复的行?
数据库的创建语句为:
CREATE TABLE `pkt_keywords` (                               
                `keywords_id` bigint(20) NOT NULL AUTO_INCREMENT,         
                `initial` char(1) NOT NULL,                               
                `keywords` varchar(255) NOT NULL,                         
                `search_num` bigint(20) DEFAULT '0',                      
                PRIMARY KEY (`keywords_id`),                              
                KEY `Index_initial` (`initial`),                          
                KEY `Index_search` (`search_num`)                         
              ) ENGINE=MyISAM  DEFAULT CHARSET=utf8  我想删除数据库中initial和keywords字段相同的行

解决方案 »

  1.   

    DELETE A
    FROM pkt_keywords AS A
    WHERE NOT EXISTS
         (
             SELECT *
             FROM pkt_keywords
             WHERE initial = A.initial 
                  AND keywords = A.keywords
                  AND keywords_id > A.keywords_id
         );
      

  2.   

    DELETE A
    FROM pkt_keywords AS A,
        (
            SELECT initial,keywords,MIN(keywords_id) AS keywords_id
            FROM pkt_keywords
            GROUP BY initial,keywords
        ) AS B
    WHERE A.initial = B.initial 
       AND A.keywords = B.keywords
       AND A.keywords_id > B.keywords_id;
      

  3.   

    delete t from pkt_keywords t , (
    select keywords_id from pkt_keywords a 
    where exists (select 1 from pkt_keywords where `initial`=a.initial and `keywords`=a.keywords and keywords_id>a.keywords_id)) b
    where t.keywords_id=b.keywords_id;