求教:一个SQL的算法

sprite14 2001-08-09 03:12:53
我有1到10,10条数据,我想把第十条数据放到第二位,而第二位以后的数据顺延,请问我写的这个SQL语句有什么问题吗?
首先我传两个参数
第十条数据的ID,叫做ID1
第二条数据的ID,叫做ID2
ID列的名称为SORT,表名TABLE

update table
set sort=sort+1
where sort<id1 and sort>=id2

这个UPDATE能否替代原先在程序中需要FOR循环来做的事情?
...全文
165 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
N_chow 2001-08-09
  • 打赏
  • 举报
回复
DECLARE @tmpd Decimal(15,0)
DECLARE @tmpd2 Decimal(15,0)

DECLARE @tmp table(ID int,Sample Decimal(15,0))
INSERT INTO @tmp SELECT ID,Sample From b WHERE ID<10 AND ID>2


/*先把第二條跟第十條記錄的值換過來*/
SELECT @tmpd=Sample From b WHERE ID=2
SELECT @tmpd2=Sample From b WHERE ID=10
UPDATE b SET Sample=@tmpd WHERE ID=10
UPDATE b SET Sample=@tmpd2 WHERE ID=2

/*其它的記錄向後順序移動*/
UPDATE b SET b.Sample=a.Sample From @tmp as a,b WHERE a.ID=(b.ID+1)
sprite14 2001-08-09
  • 打赏
  • 举报
回复
对啊,我就是要把sort<id1 and sort>=id2的语句加一
hailong525 2001-08-09
  • 打赏
  • 举报
回复
不可以,这条语句回把所有满足sort<id1 and sort>=id2的纪录的sort的值加1;
如果说真的仅有10条数据,倒是可以这样实现(oracle):
select rownum ,a.* from table a where rownum<11
order by to_char(rownum)
当我想基本上满足不了你的要求!你可以参考!

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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