sql server sql语句如何完成给定id对应的记录互换,即对调 id 的值

dzcdhjxyh 2010-09-26 01:03:49
sql server sql语句如何完成给定id对应的记录互换,即对调 id 的值?

sql语句如何完成不同id对应的记录互换,即对调 id 的值,也就是说把除 id 以外的其他字段拷贝到另一个 id 记录里,
比如:
user_id name age phone
---------- -------- ------- --------
1 张 20 111
2 王 12 222
3 李 31 333
4 赵 15 444
5 袁 23 555
6 孙 47 666

要求效果:
把 id=2 和 id=5 的记录交换,id=1 和 id=4 的记录交换,其他不变
即:
user_id name age phone
---------- -------- ------- --------
1 赵 15 444
2 袁 23 555
3 李 31 333
4 张 20 111
5 王 12 222
6 孙 47 666

id 是数据库自增加,查询语句是根据 id 排序的(top修饰的,就是说查出最新的记录), 现在想查出不是最新的某些记录,就需要把指定的记录放到最新的某个 id 下,所以想到这个办法来进行更新,交换 id 对应的记录,达到可以调整 top 查出来的结果集。

请高手帮忙实现一下! 谢谢!!

希望用 SQL 语句实现!!!
...全文
388 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivai2010 2010-09-26
  • 打赏
  • 举报
回复
update tb set user_id=case when user_id=2 then 5 when user_id=5 then 2 when user_id=1 then 4 when user_id=4 then 1 else user_id end
王向飞 2010-09-26
  • 打赏
  • 举报
回复
SELECT case when [user_id]=2 then 5 when  [user_id]=5 then 2 else [user_id] end  as [user_id],name
,age,phone
FROM [TB] order by [user_id]
王向飞 2010-09-26
  • 打赏
  • 举报
回复
[code=SQL]
--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:[TB]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]')
AND type in (N'U'))
DROP TABLE [TB]
GO

---->建表
create table [TB]([user_id] int,[name] varchar(2),[age] int,[phone] int)
insert [TB]
select 1,'张',20,111 union all
select 2,'王',12,222 union all
select 3,'李',31,333 union all
select 4,'赵',15,444 union all
select 5,'袁',23,555 union all
select 6,'孙',47,666
GO



--> 查询结果
SELECT * FROM [TB]


SELECT case when [user_id]=2 then 5 when [user_id]=5 then 2 else [user_id] end as [user_id],name
,age,phone
FROM [TB] order by [user_id]

--> 删除表格
--DROP TABLE [TB]

[/code]

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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