在mysql中交换两列之间的数据

时间:2016-04-21 13:19:42

标签: mysql mysql-workbench

我有一个user表格如下:

id     name     description

1      desc1    user1
2      desc2    user2

现在我想使用mysql交换值,如下所示:

id     name     description

1      user1    desc1    
2      user2    desc2

我找到了sqlserver的大多数示例,但没有找到mysql的示例。

我尝试使用:

 UPDATE user 
 SET name = description,  
     description = name

但最终得到了所有描述值。我尝试使用Declare声明临时变量,就像在sql server中一样,但在Mysql中没有declare

3 个答案:

答案 0 :(得分:2)

你可以这样试试:

UPDATE `user`
SET name=(@temp:=name), name = `description`, `description` = @temp

<强> WORKING DEMO

旁注:

尽量避免命名keywords or reserved keywords的表格。在您的情况下,User是MYSQL中的关键字

答案 1 :(得分:2)

尝试使用这样的临时表:

CREATE TEMPORARY TABLE IF NOT EXISTS tmp_user_table AS (SELECT id,name FROM user);
UPDATE user SET name=description;
UPDATE user u JOIN tmp_user_table tmp on u.id=tmp.id SET u.description=tmp.name;

答案 2 :(得分:0)

使用此查询...

update demo as d,(select description from demo where id = 1) as y,(select name from demo where id = 1) as z SET d.name= y.description,d.description = z.name where d.id = 1