我有一个名为的表A
,它具有ARTICLE_NUMBER
和NEWCOLUMN
列。此外,我还有另一个表B
,该表具有ARTICLENUMBER和EVENT
列。我想为我的NEWCOLUMN
专栏执行一条更新声明。
如果EVENT
在TableB
是NULL
,我的NEWCOLUMN
列应该是0
,如果EVENT
在TableB
是NOT NULL
,我的NEWCOLUMN
列应该是1
。
我已经尝试了以下方法,但不幸的是它没有用;
UPDATE A a
INNER JOIN B b
ON a.ARTICLENUMBER = b.ARTICLENUMBER
SET
a.NEWCOLUMN = CASE WHEN b.EVENT IS NULL THEN 0
WHEN b.EVENT IS NOT NULL THEN 1
END;
有人可以帮我吗?
我怀疑您确实想要EXISTS
-即设置table中的所有值A
,以及1
是否存在不NULL
匹配的事件。那将是:
UPDATE A
SET NEWCOLUMN = (CASE WHEN EXISTS (SELECT 1
FROM B
WHERE b.ARTICLENUMBER = a.ARTICLENUMBER AND
b.EVENT IS NOT NULL
)
THEN 1 ELSE 0
END);
请注意,这会更新中的所有行A
-甚至是中没有匹配项目的行B
。正如我所说,我认为这是您想要做的,尽管这并不是您的问题的确切表述方式。您的问题未指定对ARTICLENUMBER
不在中的做什么B
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句