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;
`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;
`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 pid, sid
HAVING count( 1 ) >=1
MySQL 删除重复记录 结束。
SELECT *
FROM test
GROUP BY pid, sid
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教程
MySQL 删除重复记录相关文章
- ·上一个:PHP 做守护进程
- MySQL 删除重复记录
- › 安装mysql后“应用程序无法启动因为应用程序的并行配置不正
- › 如何用sql语句直接替换mysql数据库中某字段中的特定字
- › MySQL数据库常用命令
- › 常用的MYSQL命令
- › MySQl备份恢复策略(完全+增量备份策略)
- › MYSQL增量备份
- › MYSQL全量备份和增量备份脚本
- › MySQL完全备份、增量备份与恢复
- › 用BigDump工具导入超大MySQL数据库备份文件
- › mysql数据库表太大查询慢优化的几种方法
- › 解决mysql导入数据大于2M的情况,附导出数据截图
- › 超大mysql数据库导入的办法
- 在百度中搜索相关文章:MySQL 删除重复记录
- 在谷歌中搜索相关文章:MySQL 删除重复记录
- 在soso中搜索相关文章:MySQL 删除重复记录
- 在搜狗中搜索相关文章:MySQL 删除重复记录