一个关于Update的SQL语句,请高手指点

yuxuan 2002-11-29 09:58:40
我想用一条Update语句实现,Id字段的互换,如:

表A(ID,Value):

1 a
2 b
3 c
4 d
===============
一条SQL语句实现更新(其中ID是主键):

1 b
2 a
3 c
4 d




...全文
76 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
逍遥小贼 2002-12-01
  • 打赏
  • 举报
回复
如果是这样,我想你的ID字段就不能是自增的了,应该由程序来控制ID字段的增加,这样当用户调整顺序时,你就可以方便的进行控制了,你可以将两个要互换的纪录的ID进行互换,而不需要互换其他的字段
yuxuan 2002-11-30
  • 打赏
  • 举报
回复
看样子一下子实现不了
yuxuan 2002-11-29
  • 打赏
  • 举报
回复
谢谢大家的参与

因为我要根据ID排序,用户可以调整顺序,调整顺序时,我就互换Id的值,各位有没有高见?
snowy_howe 2002-11-29
  • 打赏
  • 举报
回复
update a set value =
(select substr(b.value,instr(b.value,'@')+1) value
from
(select c.id,(c.value||'@'||(select value from a where id = 2)) value
union
select d.id,(d.value||'@'||(select value from a where id = 1)) value
from a d where d.id = 2
union
select e.id,e.value from a e where e.id not in (1,2)
) b where b.id = a.id)
/

我知道上述语句有很多缺陷,比如他只能更改id =1和id =2 的内容,还得要求value里面没有特殊字符'@',还有要求id唯一,希望对你的思路有所帮助。

另外,我不禁要问,为什么非要一条sql语句,考验大家的sql能力?
jlandzpa 2002-11-29
  • 打赏
  • 举报
回复
没有看懂字段是怎么互换的?
wuxuan 2002-11-29
  • 打赏
  • 举报
回复
这个恐怕实现不了,至少需要两条SQL语句来实现.
use select ... into newtable,

然后关联两个表进行update.

17,137

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧