我在Oracle 11中有两个表:
表ta_one:
name | active
----------------
john | yes
tina | yes
mike | yes
表ta_two:
name | active
----------------
john | yes
tina | yes
tina | no
mike | no
我要实现的目标如下:在以下情况下,我要用第二个表ta_two中的“活动”列的值来更新第一个表ta_one中的“活动”列:
因此,表ta_one在更新后应如下所示:
name | active
----------------
john | yes
tina | yes
mike | no
仅mike的条目已更改,因为tina在第二个表中多次出现,并且johns条目在表ta_two的活动列中具有“ yes”。
预先感谢您的帮助。
我总是使用值进行更新,'yes'
因为您的逻辑只会这样做。
UPDATE ta_one
SET active = 'no'
WHERE EXISTS
(
SELECT t2.active
FROM ta_one t1
INNER JOIN ta_two t2
ON t1.name = t2.name
INNER JOIN
(
SELECT name
FROM ta_two
GROUP BY name
HAVING COUNT(*) = 1
) t3
ON t1.name = t3.name
WHERE t2.active = 'no' AND
ta_one.name = t1.name
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句