SQL交换字段值

时间:2010-05-21 14:40:37

标签: sql mysql

我有一个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

在我的更新声明中。我不认为改变表添加临时列也是我最好的选择。

3 个答案:

答案 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作为会话变量的解决方案(在提供的链接中还有其他解决方案,还有一个链接回到另一个问题)