2016-04-21 61 views
2

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

,但最终所有的描述values.I尝试使用声明作为Declare在SQL Server中的临时变量,但没有declare在MySQL。

回答

1

你可以尝试这样的:

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

WORKING DEMO

在一个侧面说明:

尽量避免命名你的表是哪keywords or reserved keywords。您的情况User是MYSQL中的关键字

+0

它只是一个示例表名,我零行正在影响您的发言 – user1770589

+0

@ user1770589: - 它可以工作,我也添加了演示链接。请检查。 –

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 
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;