2009-07-29 23 views
33

Me gustaría actualizar una tabla en mySql con datos de otra tabla.Consulta avanzada de MySql: tabla de actualización con información de otra tabla

Tengo dos tablas "personas" y "negocios". La tabla de personas está vinculada a la tabla de negocios por una columna llamada "business_id".

La estructura de la tabla es necesario, está protagonizada clave primaria (Tabla: columnas): personas: * business_id, * sort_order, correo electrónico de actividad: * business_id, correo electrónico

me gustaría actualizar la columna de correo electrónico de la tabla de negocios con el correo electrónico de la tabla de personas, algo como esto (sé que me falta algo aquí):

UPDATE business b SET email = (SELECT email from People p where p.business_id = b.business_id AND sort_order = '1') WHERE b.email = ''; 

¿Tiene esto sentido? ¿Es posible?

Respuesta

86
UPDATE business b, people p 
    SET b.email = p.email 
WHERE b.business_id = p.business_id 
    AND p.sort_order = '1' 
    AND b.email = '' 
+0

muy agradable, pero de mi lado se tarda hasta 3 segundos – NineCattoRules

12

Nota, si sort_order es un INT, entonces no utilice '1' - utilizar 1:

UPDATE business b 
JOIN People p 
ON p.business_id = b.business_id 
AND p.sort_order = '1' 
SET b.email = p.email 
WHERE b.email = ''; 
Cuestiones relacionadas