Joined updates need to have both fields referenced in the update, even thought they are not both getting updates.
Also don't put the field name in the update assertion. It should simply be:
Simple update:
update wp_users set user_pass='value' where id='evalStr';
Multi-Table (This should do what you want, although I've had difficulty with this as well):
update wp_users w, user1 u set w.user_pass=u.user_pass where u.id = w.id;
Looks to me like you're trying to move all the user1 user_pass into the wp_users user_pass. As an exercise, we can do it in code as well.
In PHP you'd simply need two connections to the database, or two processes:
$db1 = new dbConnection($hostA, $userA, $passA, $databaseA);
$db2 = new dbConnection($hostB, $userB, $passB, $databaseB);
$db1->query("select id, user_pass from $db2");
while ($db1->fetchAssoc())
$db2->query("update wp_users set user_pass='{$db1->row['user_pass']}' where id={$db1->row['id']}");
Alternately, done with a single connection:
$db1 = new dbConnection($hostA, $userA, $passA, $databaseA);
$db1->query("select id, user_pass from $db2");
while($db1->fetchRow())
$todo[$db1->row[1]] = $db->row[0];
$db1 = new dbConnection($hostB, $userB, $passB, $databaseB);
foreach($todo as $id=>$pass)
$db2->query("update wp_users set user_pass='$pass' where id=$id");
PHP is very slow by comparison, because every row must be brought back to the machine for evaluation. In this case, if the joined update didn't work, I'd whip up a quick stored procedure.
PROCEDURE movePW()
BEGIN
declare thisID, thisPass varchar(64);
declare keepGoing tinyint;
declare original cursor for select id, user_pass from user1;
declare continue handler for not found set keepGoing = 0;
set keepGoing = 1;
open original;
fetch original into thisID, thisPass;
while keepGoing = 1 do
update wp_users set user_pass=thisPass where id=thisID;
fetch original into thisID, thisPass;
end if;
fetch items into thisID;
end while;
END
With all that code, I hope you can get the simple multi-table update to work...
