我有一个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);     ”我自己如果要做,应该怎么做速度最快呢? 请给出思路

解决方案 »

  1.   

    你这个问题好像没什么好办法,
    这样做吧,
    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;