我有一个SQL表(准确地说是MYSQL 4.0),由以下内容组成:
int no (primary)
int field1
int field2
我想将field1的值与field2的值交换,反之亦然。
Ex.: 1;2.5;3.76 becomes 1;3.76;2.5
我需要某种交换临时变量。但我认为我不能使用像
这样的东西Set @var1 = field1
在我的更新声明中。我不认为改变表添加临时列也是我最好的选择。
答案 0 :(得分:2)
我最初的想法是试试这个:
UPDATE YourTable
SET field1=field2
,field2=field1
WHERE ...
这里的SQL Server语法(但是在我曾经使用的每个数据库中都这样工作,我没有使用过mysql):
declare @x table (field1 int, field2 int)
insert @x values (1,2)
update @x set field1=field2, field2=field1
select * from @x
输出
field1 field2
----------- -----------
2 1
(1 row(s) affected)
然而经过一番研究后,我发现了这个:Swapping column values in MySQL
答案 1 :(得分:2)
如何创建工作表,在那里推送数据以及使用当前表连接?
答案 2 :(得分:2)
我发现了这个
UPDATE swap_test
SET x=(@temp:=x),
x = y,
y = @temp
WHERE ...
here作为会话变量的解决方案(在提供的链接中还有其他解决方案,还有一个链接回到另一个问题)