在不使用第三个变量或表的情况下交换表中两列的值
id name lastname
1 ab cd
2 df cx
3 sd gh
我想交换两列
id name lastname
1 cd ab
2 cx df
3 gh sd
答案 0 :(得分:0)
创建具有所需名称的视图可能会更容易,而不必移动大量数据:
CREATE VIEW myview AS
SELECT lastname AS name, name AS lastname
FROM mytable
答案 1 :(得分:0)
您可以使用inner join update进行尝试。
Update t1
set t1.name = t2.lastname, t1.lastname = t1.name
from <YourTableName> t1
inner join <YourTableName> t2 on t1.Id = t2.Id
这是实现。
create table #temp (Id int, name varchar(20), lastname varchar(20))
insert into #temp values
('1', 'ab', 'cd'), (2, 'df', 'cx'), (3, 'sd', 'gh')
Update t1
set t1.name = t2.lastname, t1.lastname = t1.name
from #temp t1
inner join #temp t2 on t1.Id = t2.Id
select * from #temp
drop table #temp
更新后的输出如下。
Id name lastname
--------------------
1 cd ab
2 cx df
3 gh sd
答案 2 :(得分:0)
您可以根据需要简单地更改列名称。为此,请执行以下步骤-
答案 3 :(得分:0)
在几乎所有数据库中,您都可以这样做:
update t
set name = lastname,
lastname = name;
标准行为是第一个分配不影响第二个分配。就我所知,唯一无法解决此问题的数据库是MySQL。