我有一个SQL表(MYSQL 4.0要准确)以下组成:SQL交换字段值
int no (primary)
int field1
int field2
我想与FIELD2的值,反之亦然交换FIELD1的值。
Ex.: 1;2.5;3.76 becomes 1;3.76;2.5
我需要某种交换临时变量。但我不认为我可以在我的更新声明中使用类似
Set @var1 = field1
。而且我不认为改变表格添加临时列也是我最好的选择。
我有一个SQL表(MYSQL 4.0要准确)以下组成:SQL交换字段值
int no (primary)
int field1
int field2
我想与FIELD2的值,反之亦然交换FIELD1的值。
Ex.: 1;2.5;3.76 becomes 1;3.76;2.5
我需要某种交换临时变量。但我不认为我可以在我的更新声明中使用类似
Set @var1 = field1
。而且我不认为改变表格添加临时列也是我最好的选择。
我最初的想法是要试试这个:
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是一个好主意。 – 2010-05-21 15:19:29
你需要做其他任何事情比UPDATE YourTable SET field1 = field2,field2 = field1 – mdma 2010-05-21 14:43:37
我假设你这样做只有一个列的子集? (否则,您可以重命名列!) 临时列似乎是最简单,最直接的解决方案。 – wlangstroth 2010-05-21 14:52:30
@mdma:是的,我需要做别的事情:它不起作用。顺便说一句,你的评论应该是一个答案,而不是评论。 – 2010-05-21 15:11:16