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 语句实现!!!
...全文
105 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过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]
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-09-26 01:03
社区公告
暂无公告