He intentado ingenuamente hacer esto:
mysql> UPDATE wp_sitemeta SET meta_value=(SELECT P2.meta_value FROM wp_sitemeta P2 WHERE P2.site_id="8" AND P2.meta_key="illegal_names") WHERE site_id="7" AND meta_key="illegal_names";
pero al SGBD no le ha gustado:
ERROR 1093 (HY000): You can't specify target table 'wp_sitemeta' for update in FROM clause
Se puede usar una subconsulta para asignaciones dentro del comando UPDATE, pero no se puede usar la misma tabla para la cláusula FROM de la subconsulta y el objetivo a actualizar. Tras leer esta historia, lo he resuelto usando una tabla temporal:
mysql> UPDATE wp_sitemeta SET meta_value=(SELECT meta_value FROM (SELECT meta_value FROM wp_sitemeta WHERE site_id="8" AND meta_key="illegal_names") AS X) WHERE site_id="7" AND meta_key="illegal_names";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0