2009-07-29 5 views
33

Je voudrais mettre à jour une table dans mySql avec des données d'une autre table.Requête MySql avancée: Mettre à jour la table avec les informations d'une autre table

J'ai deux tables "personnes" et "affaires". La table people est liée à la table métier par une colonne appelée "business_id".

La structure de la table nécessaire, clé primaire est une étoile (Tableau: colonnes): Personnes: * business_id, * sort_order, email entreprise: * business_id, email

Je voudrais mettre à jour la colonne email de table d'affaires avec l'email de la table des gens, quelque chose comme ça (je sais qu'il me manque quelque chose ici):

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

Est-ce logique? C'est possible?

Répondre

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

très agréable, mais de mon côté, il faut jusqu'à 3 secondes – NineCattoRules

12

Remarque, si sort_order est un INT, alors ne pas utiliser '1' - utiliser 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 = ''; 
Questions connexes