【发布时间】:2019-10-08 13:09:07
【问题描述】:
在不使用第三个变量或表的情况下交换表中两列的值
id name lastname
1 ab cd
2 df cx
3 sd gh
我想交换两列
id name lastname
1 cd ab
2 cx df
3 gh sd
【问题讨论】:
标签: sql
在不使用第三个变量或表的情况下交换表中两列的值
id name lastname
1 ab cd
2 df cx
3 sd gh
我想交换两列
id name lastname
1 cd ab
2 cx df
3 gh sd
【问题讨论】:
标签: sql
在几乎任何数据库中,您都可以:
update t
set name = lastname,
lastname = name;
第一个分配不会影响第二个分配是标准行为。据我所知,唯一不起作用的数据库是 MySQL。
【讨论】:
您可以根据需要简单地更改列名。为此,请执行以下步骤-
【讨论】:
您可以使用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
【讨论】:
不必移动大量数据,创建具有所需名称的视图可能更容易:
CREATE VIEW myview AS
SELECT lastname AS name, name AS lastname
FROM mytable
【讨论】: