data translating issues
You have to use the following statement:

UPDATE A 
SET A.CityID = B.CityID 
FROM dbo.client AS A
INNER JOIN dbo.city AS B 
       ON A.city = B.City;


If you don't want a [case/blank spaces] sensitive update (' New York   ' = 'NEW YORK') use this statement:

UPDATE A 
SET A.CityID = B.CityID 
FROM dbo.client AS A
INNER JOIN dbo.city AS B 
       ON rtrim(ltrim(upper(A.city))) = rtrim(ltrim(upper(B.City)));