sql 记录批量互换

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:24:00
比如我想把 ID是157到173 的记录内容和 ID是384到400的记录内容 进行互换 ID保持不变化

记录样式:
ID 字段1 字段2 字段3 字段4 字段5 字段6 字段7

157 字段 字段 字段 字段 字段 字段 字段

能实现吗?
id是自动编写的 不能修改

先把需要修改的内容放了一个临时表里

SELECT * INTO #A FROM 表名
WHERE ID >=157 AND ID<=173
GO
INSERT #A SELECT * INTO #A FROM 表名
WHERE ID >=384 AND ID<=400
GO
下面按临时表内容进行修改
先改ID是157到173
UPDATE 表名 SET 字段1=B.字段1, 字段2=B.字段2, 字段3=B.字段3, 字段4=B.字段4, 字段5=B.字段5, 字段6=B.字段6, 字段7=B.字段7
FROM 表名 A,#A B
WHERE A.ID=B.ID+227
AND A.ID >=157 AND A.ID<=173
GO
再改ID是384到400
UPDATE 表名 SET 字段1=B.字段1, 字段2=B.字段2, 字段3=B.字段3, 字段4=B.字段4, 字段5=B.字段5, 字段6=B.字段6, 字段7=B.字段7
FROM 表名 A,#A B
WHERE A.ID=B.ID-227
AND A.ID >=384 AND A.ID<=400

简单啊,你可以掉过来想,把ID互换就完事了。呵呵。
update 表 set id=id+10000 where id>=384 and id<=400
update 表 set id=id+227 where id>=157 and id<=173
update 表 set id=id-10227 where id>=10384 and id<=10400

不好实现
如果用临时表,游标的话就好实现了

这样做行不行(总的思路是循环):
1:查询出157到173有多少条记录(循环次数).
2:定义一些变量(你这张表有多少个字段就定义多少个变量,在加上一个循环计数器.)
3:循环互换(两杯水怎么换,知道吗?中间加个杯