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