2011-04-12 3 views
1

J'essaie de trouver tous les champs d'une table vides et de les remplir avec les données d'une autre table. Voici ce que j'ai:Mise à jour de plusieurs champs vides dans une table avec des données d'une autre table

UPDATE t1 SET col1 = (
    SELECT col99 
    FROM t2 
    WHERE t1.product_ID = t2.product_ID 
) WHERE col1 IS NULL 

qui fonctionne parfaitement pour mettre à jour tous les champs vierges dans col1 de t1. Mais j'ai aussi besoin de vérifier les blancs dans d'autres champs et de les mettre à jour. Je ne veux pas que la requête mette à jour tous les champs chaque fois que l'un d'entre eux est vide, juste le champ vide. Je pourrais lancer plusieurs requêtes mais je dois imaginer qu'il y a un moyen plus propre et meilleur.

Merci,

Matthew

Répondre

1

Essayez:

UPDATE t1 
SET 
    col1 = COALESCE(col1, (SELECT col99 FROM t2 WHERE t1.product_ID = t2.product_ID)), 
    col2 = COALESCE(col2, (SELECT ...)), 
    -- etc. 

Ne devrait pas faire mieux que votre solution initiale. C'est juste faire le travail avec une seule requête UPDATE au lieu de plusieurs.

+0

Cela fait l'affaire. Merci! – MatthewLee

Questions connexes