有两条记录
id1, 1
id2, 2
现在我想交换它们两个的序号,也就是说变成
id1, 2
id2, 1
能否用一条sql语句实现
11 个解决方案
#1
这个需求好奇怪啊。
SELECT T1.ID,T2.序号
FROM Table T1
JOIN Table T2 ON T2.ID<>T1.ID
SELECT T1.ID,T2.序号
FROM Table T1
JOIN Table T2 ON T2.ID<>T1.ID
#2
就是调整两条记录的次序,所以要交换它们的序号。我想用一条SQL语句实现
也就是 UPDATE .....
也就是 UPDATE .....
#3
Try this:
UPDATE Table1
SET 序号=T2.序号
FROM Table1 T2 WHERE T2.ID<>Table1.ID
UPDATE Table1
SET 序号=T2.序号
FROM Table1 T2 WHERE T2.ID<>Table1.ID
#4
to 就是调整两条记录的次序,所以要交换它们的序号。我想用一条SQL语句实现
也就是 UPDATE ...
一句不太可能
也就是 UPDATE ...
一句不太可能
#5
樓上的思路是對的,但是語法有錯誤。
UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID
UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID
#6
不好意思,說的樓上是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
*/
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
*/
#7
多谢回答。数据库里显然不可能只有两条数据,
下面这样做不知可否
UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID
where T2.ID=='id1' or T2.ID=='id2'
下面这样做不知可否
UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID
where T2.ID=='id1' or T2.ID=='id2'
#8
id1, 1
id2, 2
id3, 3
id4, 4
你UPDATE後的結果是怎樣的??
id2, 2
id3, 3
id4, 4
你UPDATE後的結果是怎樣的??
#9
好象语法错
#10
如果數據為
id1, 1
id2, 2
id3, 3
id4, 4
你UPDATE後的結果是怎樣的??
id1, 1
id2, 2
id3, 3
id4, 4
你UPDATE後的結果是怎樣的??
#11
曾经有人考过我.
update table set a = b ,b=a
不信可以试试,
a 也 b 的字段类型要一至.
update table set a = b ,b=a
不信可以试试,
a 也 b 的字段类型要一至.
#1
这个需求好奇怪啊。
SELECT T1.ID,T2.序号
FROM Table T1
JOIN Table T2 ON T2.ID<>T1.ID
SELECT T1.ID,T2.序号
FROM Table T1
JOIN Table T2 ON T2.ID<>T1.ID
#2
就是调整两条记录的次序,所以要交换它们的序号。我想用一条SQL语句实现
也就是 UPDATE .....
也就是 UPDATE .....
#3
Try this:
UPDATE Table1
SET 序号=T2.序号
FROM Table1 T2 WHERE T2.ID<>Table1.ID
UPDATE Table1
SET 序号=T2.序号
FROM Table1 T2 WHERE T2.ID<>Table1.ID
#4
to 就是调整两条记录的次序,所以要交换它们的序号。我想用一条SQL语句实现
也就是 UPDATE ...
一句不太可能
也就是 UPDATE ...
一句不太可能
#5
樓上的思路是對的,但是語法有錯誤。
UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID
UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID
#6
不好意思,說的樓上是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
*/
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
*/
#7
多谢回答。数据库里显然不可能只有两条数据,
下面这样做不知可否
UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID
where T2.ID=='id1' or T2.ID=='id2'
下面这样做不知可否
UPDATE T1
SET 序号=T2.序号
FROM TEST T2 Inner Join TEST T1 On T2.ID<>T1.ID
where T2.ID=='id1' or T2.ID=='id2'
#8
id1, 1
id2, 2
id3, 3
id4, 4
你UPDATE後的結果是怎樣的??
id2, 2
id3, 3
id4, 4
你UPDATE後的結果是怎樣的??
#9
好象语法错
#10
如果數據為
id1, 1
id2, 2
id3, 3
id4, 4
你UPDATE後的結果是怎樣的??
id1, 1
id2, 2
id3, 3
id4, 4
你UPDATE後的結果是怎樣的??
#11
曾经有人考过我.
update table set a = b ,b=a
不信可以试试,
a 也 b 的字段类型要一至.
update table set a = b ,b=a
不信可以试试,
a 也 b 的字段类型要一至.