Mysql с использованием coalece в заявлении об обновлении - PullRequest
0 голосов
/ 10 марта 2011

Как бы я использовал coalesce в операторе обновления. Все примеры, которые я видел, используют оператор select.

UPDATE d.n n JOIN d.o o ON n.ID = o.ID SET n.OC = o.OC

нужно n.oc для Coalesce( n.oc,0), но Sql не удалось

CALL SQLExecute(CONCAT('UPDATE d.n  n JOIN data.o_ o ON n.id = o.id SET COALESCE(n.OC, null) = o.OC' ));  

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Ваш запрос UPDATE d.n n JOIN data.o_ o ON n.id = o.id SET COALESCE(n.OC, null) = o.OC не имеет смысла.COALESCE(x,y) использует x, если x не нуль, в противном случае он использует y.

Таким образом, ваш запрос должен быть

UPDATE d.n  n JOIN data.o_ o ON n.id = o.id SET n.OC = o.OC //if null allowed

или это

UPDATE d.n  n JOIN data.o_ o ON n.id = o.id SET n.OC = COALESCE(o.OC,'somevalue') //if null not allowed
0 голосов
/ 10 марта 2011

О, мой. Вы НЕ МОЖЕТЕ обновить функцию!

SET n.OC = COALESCE(o.OC, 0) 

минимум

...