oy !
En partant par une fonction mysql ca va pas être pratique (perso je ne fais jamais de traitement de base directement en mysql).
La question est donc : quel langage de programmation utilises-tu?
sinon dans l'absolu, tu peux faire :
1 : création d'une table temporaire pour récupérer les résultats :
CREATE TEMPORARY TABLE _TEMPTAB (
t_id int(10) unsigned NOT NULL AUTO_INCREMENT,
t_lib varchar(200) NOT NULL DEFAULT '',
PRIMARY KEY ('t_id')
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
2 : récupération des résultats et insertion dans la table temporaire (l'insertion génèrera l'auto incrément :
INSERT INTO _TEMPTAB(t_lib)
SELECT DISTINCT name from c1;
3 : enfin, pour chaque enregistrement dans c1 :
update c1 set linkId = ** where name='**';
-- en remplacant ** par les valeur de la table temporaire : t_id pour link id , t_lib pour le name. (Je suppose que tu as ajouté ton champs linkid)
avec le language que tu utilise je pourrai te donner le code mais je suppose que tu es capable de le faire.
SI tu n'a que la base de données, tu peux executer la requête :
select distinct concat("update c1 set linkId = ", t_id, " WHERE NAME='",t_lib,"';")
FROM _TEMPTAB;
et pour exécuter chaque ligne de résultat.
naga