Eh bien, il semble que votre champ de nom ne soit pas unique. Votre sous-requête correspond à plus d'une ligne, vous devez donc soit trouver un identifiant unique à faire correspondre autre que le nom, soit, si vous souhaitez simplement prendre le premier résultat de la sous-requête, procédez comme suit :
UPDATE TABLE1 SET ID = (SELECT TABLE2.ID FROM TABLE2, TABLE1
WHERE TABLE1.NAME=TABLE2.NAME LIMIT 1) WHERE TABLE1.ID IS NULL