回楼上各位: 谢谢指教optimize的用法---试验中 楼主的问题用临时表是比较好的解决方法 新建一个临时表 create table tmp as select * from youtable group by name 删除原来的表 drop table youtable 重命名表 alter table tmp rename youtable(mysql4.0.2版本以上支持!!!!!)其中的name也就是重复的字段
to 版主: 本来以为你的group by有问题,结果竟然是正确的。因为sqlserver里面group by必须有聚合函数配合,mysql竟然没有这个限制。 不过你创建临时表错误,因为那不叫临时表,只是一个中间表而已。完整的sql语句: create table tmp as select * from tableName group by key1,key2 alter table tmp rename youtable(我的mysql3.23就支持)
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
用insert和select 结合的方式把相异的记录插入一个新表中
在删除旧表就可以了
遍历所有的记录,依次比较第i和第i+1条(除了id)所有的字段,如果全相等就del it.
再难点的,叫楼上的高手给你回答吧,
$array=array();
while($arr=mysql_fetch_array($result)){
$tmpArr=array_unique($arr);
array_shift($tmpArr);
if(in_array($tmpArr,$array)){
mysql_query("delete from table where id=".$arr[id]);
}else{
$array[]=$tmpArr;
}
}
进入phpMyAdmin 2.2.6然后就可以了
(OPTIMIZE 只能帮助你优化,不能帮助你完成去掉重复纪录的功能)
能否用sql语句来实现?
关键是你如何生成临时表并且同时能够删除那些关键字key1,key2段重复?谁能写出sql语句,就算成功!各位不能只会说而不会写
array_shift();
in_array();谁能解释下这几个函数的意思,最近小弟经常看见别人用数组方面的函数,但都看不懂,谁能指点下在那有这方面的文章可以看看,谢谢!
array_shift($arr)将数组第一个元素踢出去
in_array($var,$array);判断$var是否为$array的一个元素,$var可以为数组
谢谢指教optimize的用法---试验中
楼主的问题用临时表是比较好的解决方法
新建一个临时表
create table tmp as select * from youtable group by name
删除原来的表
drop table youtable
重命名表
alter table tmp rename youtable(mysql4.0.2版本以上支持!!!!!)其中的name也就是重复的字段
本来以为你的group by有问题,结果竟然是正确的。因为sqlserver里面group by必须有聚合函数配合,mysql竟然没有这个限制。
不过你创建临时表错误,因为那不叫临时表,只是一个中间表而已。完整的sql语句:
create table tmp as select * from tableName group by key1,key2
alter table tmp rename youtable(我的mysql3.23就支持)