Information générale
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
>I have a table with three fields, including one logical. I want to change the logical to .T. for every record that contains a unique entry. I've tried REPLACE MyTABLE.FIELD3 WITH .T. FOR (SELECT DISTINCT FIELD2 FROM MyTABLE) but I get a "Function name is missing )." What am I doing wrong?
The FOR clause must be a boolean value, the SELECT returns a record set. I don't know if there is a way to make that work. BTW, distinct doesn't return unique records, it just makes sure the output only has one of each in a group
try this:
Sele field2 as pk, cnt(field2) as cntpk from mytable into table c:\grpcnts
index on pk tag pk
sele mytable
set relation to field2 into grpcnts
Update mytable set field3=.T. where grpcnts.cntpk = 1
I tried this on a small table, and it works. If you have really large tables, it might be slower. I'd guess there's a better way, but A way is better than No way.
Précédent
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement