ACCESS中有数据库FZX,FZX中有表USER0,USER0中有ID,FDQ,FZX,DZ,NEWFZX,NEWDZ。FZX的记录不是唯一的。
QUERY2.Close;
QUERY2.SQL.Clear;
QUERY2.SQL.Add('delele from user0 where id in (select min(id) from user0 group by fzx)');
QUERY2.ExecSQL;
我试过删除1万多条记录要用7分多钟。等得象死机一样。有时候还一执行就死机。
不知哪位高手有更高效率的SQL语句?
QUERY2.Close;
QUERY2.SQL.Clear;
QUERY2.SQL.Add('delele from user0 where id in (select min(id) from user0 group by fzx)');
QUERY2.ExecSQL;
我试过删除1万多条记录要用7分多钟。等得象死机一样。有时候还一执行就死机。
不知哪位高手有更高效率的SQL语句?
解决方案 »
- form显示后,进度条直接运行,如何实现?
- 通过tclientdataset如何保存图片到sql server 2005
- dephi listbox 添加图片后刷新问题
- 我想做一个ocx控件实现调用客户端的notes的应用程序
- 强烈要求Chinaborl来个自我介绍。
- 求助:我的IE浏览器打开不存在的网页时,总会出来"亚洲交友中心"页面,如何取消?
- 今年中程,大概多少分能PASS啊?
- 关于Treeview中图标的问题,来的都有分
- 答应给我QQ号的,怎么都不见拉!!!100分!!!
- 不好意思,问个很基础的问题,我一直没用过,pchar怎么用?
- sos!
- 初级问题:怎样把 ALT+s 这个组合键传到指定的程序中呢?
不过,最好还是用SQL Server好些。
要不你大型数据库如(sql server)等等
我用上面的句子,结果把所有的记录都删除了。有没有更好更快的方法啊?
select min(id) from user0 b group by fzx然后在执行:
select id from user0 a where exists (select min(id) from user0 b where a.id = b.id group by fzx)
看看获得的数据是不是正确的,最后执行删除:
delele from user0 a where exists (select min(id) from user0 b where a.id = b.id group by fzx)
你不妨把数据库压缩后看看...
也可以用msde啊
如果是中小型的数据库可以用sql server
大型的就要用o9i和sybase了记得,表中一定要有主键和索引,可以加快速度
1、 我是想保留各个fzx中最小的id的记录啊,你却相反。
2、在上面的三句中。第一句没有问题,第二句却少了5个记录。第三句还是把所有的记录都给删除了。
哪位大虾还有更好的方法????????
用索引比较方便,就象在数据结构的循环链表里定义头尾指针一样,那样即方便,效率又高!
delele from user0 a where exists (select min(id) from user0 b where a.id <> b.id group by fzx)
你的代码执行起来和我原来的代码一样慢啊。在ACCESS下难道真的没有了更快的方法了吗?
如果需要删除的数据比较多,你可以先将需要保留的数据先放置到一个临时表中,然后删除原先的表,最后再恢复那些保留的数据
select * from user0 where id in (select min(id) from user0 group by fzx) into tmp1
drop user0
select * from tmp1 into user0
drop tmp1
其实,你的方法我也想过,不过当时代码写错了。最后答案如下:
1、SELECT * INTO temp1 FROM user0 WHERE id in (select min(id) from user0 group by fzx);
2、drop table user0
3、SELECT * INTO user0 FROM temp1;
4、drop table temp1
以上代码执行删除比原来的快了一半以上。
强烈要求发帖的人要在结帖的时候公布最后代码。