嘿,我正在研究Oracle中的逻辑,其中有一个将一些数据插入表中的过程。 但是我仍然需要对列执行一些操作,我知道我们可以通过游标实现此操作,但这会影响过程的吞吐时间。
只想知道单个更新是否适用于这种情况。
-----这种东西----------
Update tablename
Set column_2 = case when colum_2 = 0 then column_1 else column_2 end,
Column_3 =case when colum_3 = 0 then column_ 2 else column_ 3 end ;
答案 0 :(得分:0)
我不能说这是否“有效”,因为您还没有说出希望结果如何。
等号右侧的所有表达式都将使用更新前的值。
例如,
Set column_2 = case when colum_2 = 0 then column_1 else column_2 end,
Column_3 =case when colum_3 = 0 then column_ 2 else column_ 3 end
...绝不会使Column_3
的值最初位于Column_1
中,如果Column_2
和Column_3
都等于原始值,可能会担心归零。
那不会发生。如果Column_2
和Column_3
的原始值都为零,则Column_2
将被设置为Column_1
的原始值,而Column_3
将被设置为Column_2
的原始值(我们已经说过是零)。
如果当两列都为零时,您希望两列都获得Column_1
的值,则必须这样写:
SET column_2 = case when column_2 = 0 then column_1 else column_2 end,
column_3 = case when column_3 = 0
then
case when column_2 = 0 THEN column_1 ELSE column_2 end
else
column_3 end
答案 1 :(得分:0)
我不确定我是否真正了解您想要什么,但是UPDATE可以在一个UPDATE语句中更新行中多个列的值: UPDATE table_name设置col01 =,col02 =等...在哪里