现在我有:
UPDATE table_name
SET logical_field = 0
WHERE logical_field != 0
;
UPDATE table_name t
SET t.logical_field = 1
WHERE EXISTS
(SELECT 1
FROM other_table s
WHERE s.key_field = t.key_field)
AND t.logical_field != 1
;
这是我的代码的简化版本。我想要一个声明,根据另一个记录的存在设置逻辑,如果不需要则不更新它。
我查看了'解码'语句,我认为这可行。解码是最好的,还是有更简单的方法。
使用:Oracle 11g
答案 0 :(得分:0)
我想我的解码工作正常。让我知道你的想法和/或是否有更好的方式来学习它。
UPDATE table_name t
SET t.logical_field =
decode((SELECT distinct s.key_field
FROM other_table s
WHERE s.key_field = t.key_field), t.key_field, 1, 0)
WHERE t.logical_field !=
decode((SELECT distinct s.key_field
FROM other_table s
WHERE s.key_field = t.key_field), t.key_field, 1, 0)
;