当前位置:多学网学习教育电脑学习编程入门PHP教程MySQL 删除重复记录

MySQL 删除重复记录

[08-23 22:08:35]   来源:http://www.duoxue8.com  PHP教程   阅读:323
MySQL 删除重复记录,标签:PHP技巧,php培训,php学习,php安装,http://www.duoxue8.com

更新:没想到 SELECT DISTINCT 也能用在这里,还以为多对多的时候不行,最简单的办法就是

INSERT INTO tmp SELECT DISTINCT * FROM test

今天终于解决了一个难题
有个表结构如下

CREATE TABLE IF NOT EXISTS `test` (
  `pid` int(11) NOT NULL,
  `sid` int(11) NOT NULL,
  KEY `psid` (`pid`,`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

当时设计的时候不合理,应该做成唯一的联合索引
现在表里有大量的重复数据,为了删除它,费了我一番工夫

解决办法如下:
先建一个临时表,结构和 test 一样,但用的是唯一联合索引

CREATE TABLE IF NOT EXISTS `tmp` (
  `pid` int(11) NOT NULL,
  `sid` int(11) NOT NULL,
  UNIQUE KEY `psid` (`pid`,`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

然后

INSERT INTO tmp
SELECT *
FROM test
GROUP BY pidsid
HAVING count( 1 ) >=1

这时 tmp 表里的数据就没有重复的了

接着,删除 test 表,再把 tmp 表改名为 test 就大功告成!

注:改成 UNIQUE KEY `psid` (`pid`,`sid`) 以后,插入数据时,重复的将无法插入。

本文地址: http://www.21andy.com/blog/20100307/1739.html




MySQL 删除重复记录 结束。
Tag:PHP教程PHP技巧,php培训,php学习,php安装电脑学习 - 编程入门 - PHP教程