如何快速删除Access指定字段的重复记录 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061223120244146.html
我有一个ACCESS数据表如下
ID Name Score
1 老张 80
2 王二小 70
3 老张 80
4 李小黑 90
====================
现在我想删除 字段 Name 重复的纪录,达如下效果:
ID Name Score
1 老张 80
2 王二小 70
4 李小黑 90
请问,在DELPHI里面操作ACCESS怎么做最快?
我查询了CSDN见到一个人操作ACCESS用了这样的表达式:“
这个是公认的最快的删除重复记录的SQL:
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO); ”
我自己如果要做,应该怎么做速度最快呢?
请给出思路
你这个问题好像没什么好办法,
这样做吧,
Function GetDelReocrdsID: string;
var
midStr,ResultStr:string;
begin
with adodataset do
begin
if active then active:=false;
commandtext:='select * from EMP order by [Name] asc' ; // 一定要排序
open; midStr:=''; ResultStr:='';
while (Not eof) do
begin
if trim(midstr)=trim(FieldByName('Name').asstring) then
ResultStr:=ResultStr+FieldByName('ID').asstring+',';
else midStr:=FieldByName('Name').asstring;
Next;
end;
if result<>'' then
result:=Copy(ResultStr1,length(ResultStr)-1)
else result:='-1'
Close;
end;
end;
procedure deleteSelectRecord;
begin
with Adocommand do
begin
commandtext:='Delete From EMP where ID in ('+GetDelReocrdsID+')';
execute;
end;
end;