Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Updating records in FoxPro tables
Message
 
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
00565010
Message ID:
00565084
Views:
18
>>>>>>I have some dupe records that are causing me problems and I need to delete one of the dupes for each record in several tables. Is there a way to do that without deleting each individual record by hand? Is there a way to do it using the command line?
>>>>>
>>>>>select KeyID, <b>recno() as RecNum</b>, count(*) as CntDups from yourtable group by KeyID ;
>>>>>       having CntDups > 1 ;
>>>>>       into cursor curDupes
>>>>>index on KeyID tag KeyID
>>>>>select yourtable
>>>>>set relation to KeyID into curDupes
>>>>>delete for found('curDupes') and recno()=curDupes.RecNum && One of the dupes would be deleted
>>>>
>>>>Unfortunately, this code would delete all duplicate records not just one of them.
>>>
>>>Oops, what I was thinking :) Ok, how about new version (see changes in bold)
>>
>>Sorry, not going to work eaither because RECNO() doesn't work properly with GROUP BY clause.
>
>Ok, last try before I'll actually run a test :)
>
>select KeyID, count(*) as CntDups from yourtable group by KeyID ;
>       having CntDups > 1 ;
>       into cursor curDupes
>if _tally>0 && There are dups in table
>  index on KeyID tag KeyID
>  scan
>  if seek(KeyID,'YourTable',"KeyID") && should be always found
>     * select YourTable
>     delete in YourTable && One duplicated record is deleted now
>   endif
>   endscan
>endif
>use in curDupes
>
Looks like it'll work for one duplicate per KeyId. What if there're more than one?
--sb--
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform