-1
A
回答
1
假设分配“从表中有两列,ID和SAL,30000行,编写一个查询该交换ID = 101和id = 102" ,这样的事情应该工作的工资:
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);
编辑:正如他的回答证明由Mottor这个问题,声明CA写得更简洁,如下所示。 (请注意,我更喜欢DECODE使用CASE表达式 - 我认为它更易于阅读和维护。)
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);
2
UPDATE emp x
SET sal =
(SELECT sal
FROM emp
WHERE id = DECODE (x.id, :id1, :id2, :id1))
WHERE id IN (:id1, :id2)
相关问题
- 1. 如何使用单个查询更新两行的交换值
- 2. 在单个更新(Oracle)上交换列值
- 3. 如何交换列表中的单词。
- 4. 如何交换SQLite列中的值?
- 5. 如何交换更新字段中的值
- 6. 更换新阵列键值
- 7. SQL:交换列值
- 8. 我想更新只有单行列值与回滚提交
- 9. 列中的CSV交换值
- 10. 如何复制多列单列更新
- 11. 如何更新laravel中的单个列
- 12. 如何增加更新列的值?
- 13. 如何更新表中的列值?
- 14. 如何更新列表的项目值?
- 15. 更新从单列表中的列1到列2的值替换查询
- 16. GWT CELLTABLE列的单元值更新
- 17. 无法更新表中的单列值
- 18. 如何用查询结果更新单个列的值?
- 19. 如何在单个查询更新多个值的列
- 20. Oracle SQL更新交换号
- 21. 如果新值更高,只更新列
- 22. 如何根据另一列的值更新“职级”列的值?
- 23. 如何交换记录值?
- 24. 如何交换dataTable行值?
- 25. 如何交换下拉值?
- 26. 如何通知动态数据交换(DDE)的任何更新?
- 27. 更新单列
- 28. 更新列值
- 29. 更新列值
- 30. 更新值列
这是没有意义的。请更具体一些。 – shadow
只是:'update table_name set id = sal,sal = id;' – krokodilko
你需要做什么 - 在两个id之间切换两个薪水?如果桌子上有30,000个ID,你想切换哪个?工作分配是“我给你两个身份证,我希望你在这两个人之间换工资”? – mathguy