Oracle 如何交换单列的更新值
我想更新sal专栏,比如Oracle 如何交换单列的更新值,oracle,Oracle,我想更新sal专栏,比如 id sal 101 5000 102 9000 假设分配是“从一个包含两列id和sal以及30000行的表中,编写一个在id=101和id=102之间交换工资的查询”,类似这样的操作应该可以: id sal 101 9000 102 5000 编辑:正如莫特在回答这个问题时所证明的那样,陈述可以写得更简洁,如下所示。(请注意,我更喜欢使用大小写表达式而不是解码-我认为它更易于阅读和维护。) 这毫无意义。请更具体一点。只需:updatetable
id sal
101 5000
102 9000
假设分配是“从一个包含两列id和sal以及30000行的表中,编写一个在id=101和id=102之间交换工资的查询”,类似这样的操作应该可以:
id sal
101 9000
102 5000
编辑:正如莫特在回答这个问题时所证明的那样,陈述可以写得更简洁,如下所示。(请注意,我更喜欢使用大小写表达式而不是解码-我认为它更易于阅读和维护。)
这毫无意义。请更具体一点。只需:
updatetable\u name set id=sal,sal=id代码>你需要做什么-在两个id之间切换两个工资?如果表中有30000个id,您希望切换哪些id?任务是“我给你两个身份证,我想让你在这两个身份证之间转换工资”吗?
update zz set sal = case id when 101 then (select sal from zz where id = 102)
when 102 then (select sal from zz where id = 101)
end
where id in (101, 102);
update zz x set sal = (select sal from zz where id = case x.id when 101 then 102
when 102 then 101 end)
where id in (101, 102);
UPDATE emp x
SET sal =
(SELECT sal
FROM emp
WHERE id = DECODE (x.id, :id1, :id2, :id1) )
WHERE id IN ( :id1, :id2)