J'essaie de mettre à jour une colonne dans la table a
en fonction de si une colonne différente dans la table est dans un ensemble de résultats de la table b
. Actuellement, les variantes de:Vérifiez s'il existe dans l'instruction SQL CASE
update a
set a.field1 =
case
when exists (
select b.field2
from b
where b.field2 = a.field2
)
then 'FOO'
else 'BAR'
end
ne sont pas en cours d'exécution. Des idées pour faire cela pour une base de données DB2?
Modifier: Merci pour vos réponses, mieux que je peux faire est
update a set field1 = 'FOO' where field2 in (select field2 from b);
update a set field1 = 'BAR' where field2 not in (select field2 from b);
Mais je vais laisser cette personne ouverte en cas peut trouver une version du code en haut qui fonctionne.
Wow ... saintes mises à jour inutiles Batman! –
@Tom. Cela devrait le réparer. –
Cela fera l'affaire. Vous pouvez toujours le mettre dans une instruction de mise à jour avec une instruction CASE vérifiant les valeurs NULL dans le PK de la table B, mais il peut également être avantageux de le faire en deux étapes et ce que vous avez éliminé les mises à jour en double. –