2010-07-21 5 views

Répondre

0

En gros:

UPDATE a SET a.FIELD = (CASE WHEN b.FIELD IS NULL or b.FIELD = '' THEN c.FIELD ELSE b.FIELD END) 
FROM TABLEA a 
LEFT JOIN TABLEB b on a.id = b.someid 
LEFT JOIN TABLEC c on a.id = c.someid 

Joins peuvent ou ne peuvent pas être à gauche, en fonction de vos données, et vous pouvez vouloir gérer le cas où les deux b.field et c.field sont nuls.

4

Utilisation:

UPDATE A 
    SET column = (SELECT COALESCE(b.val, c.value) 
        FROM B b 
        JOIN C c ON c.col = b.col) 

COALESCE retourne la première valeur non nulle à partir de la liste des colonnes, le traitement de gauche à droite. Ce qui est étrange, c'est que vous n'avez pas indiqué comment les tables B et C sont en relation les unes avec les autres - si elles ne le sont pas, vous regardez un produit cartésien des deux tables (pas idéal). Ma réponse utilise un JOIN, dans l'espoir que cela soit possible en fonction des données.

Questions connexes