如何用一条SQL语句交换两条记录的某个字段值

runrunrun 2006-06-29 08:54:31
假设一个表,有两个字段 [ID], [序号]
有两条记录
id1, 1
id2, 2
现在我想交换它们两个的序号,也就是说变成
id1, 2
id2, 1
能否用一条sql语句实现
...全文
1016 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2006-06-30
  • 打赏
  • 举报
回复
不好意思,說的樓上是kssys() ,語句使用的前提是確實只有兩條數據。


Create Table TEST(ID Varchar(50),序号 Int)
Insert TEST Select 'id1',1
Union All Select 'id2',2
GO
UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID

Select * From TEST
GO
Drop Table TEST
--Result
/*
ID 序号
id1 2
id2 1
*/
paoluo 2006-06-30
  • 打赏
  • 举报
回复
樓上的思路是對的,但是語法有錯誤。

UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID
Knight94 2006-06-30
  • 打赏
  • 举报
回复
to 就是调整两条记录的次序,所以要交换它们的序号。我想用一条SQL语句实现
也就是 UPDATE ...

一句不太可能
jiang8282 2006-06-30
  • 打赏
  • 举报
回复
曾经有人考过我.
update table set a = b ,b=a
不信可以试试,
a 也 b 的字段类型要一至.
paoluo 2006-06-30
  • 打赏
  • 举报
回复
如果數據為

id1, 1
id2, 2
id3, 3
id4, 4

你UPDATE後的結果是怎樣的??
runrunrun 2006-06-30
  • 打赏
  • 举报
回复
好象语法错
paoluo 2006-06-30
  • 打赏
  • 举报
回复
id1, 1
id2, 2
id3, 3
id4, 4

你UPDATE後的結果是怎樣的??



runrunrun 2006-06-30
  • 打赏
  • 举报
回复
多谢回答。数据库里显然不可能只有两条数据,

下面这样做不知可否

UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID
where T2.ID=='id1' or T2.ID=='id2'

kssys 2006-06-29
  • 打赏
  • 举报
回复
Try this:

UPDATE Table1
SET 序号=T2.序号
FROM Table1 T2 WHERE T2.ID<>Table1.ID
runrunrun 2006-06-29
  • 打赏
  • 举报
回复
就是调整两条记录的次序,所以要交换它们的序号。我想用一条SQL语句实现
也就是 UPDATE .....
kssys 2006-06-29
  • 打赏
  • 举报
回复
这个需求好奇怪啊。

SELECT T1.ID,T2.序号
FROM Table T1
JOIN Table T2 ON T2.ID<>T1.ID

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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