2016-04-21 42 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;