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

shstlldc  于 2022-09-18  发布在  Java
关注(0)|答案(4)|浏览(136)

我有一个user表,如下所示:

id     name     description

1      desc1    user1
2      desc2    user2

现在,我想使用MySQL交换这些值,如下所示:

id     name     description

1      user1    desc1    
2      user2    desc2

我找到了大多数用于SQL服务器的示例,但没有找到用于MySQL的示例。

我尝试使用:

UPDATE user 
 SET name = description,  
     description = name

但最终得到了所有的描述值。我尝试使用Declare声明TEMP变量,就像在SQL服务器中一样,但MySQL中没有declare

vsdwdz23

vsdwdz231#

你可以这样尝试:

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

工作演示

附注:

尽量避免命名为keywords or reserved keywords的表。在您的例子中,User是MySQL中的一个关键字

2eafrhcq

2eafrhcq2#

尝试使用这样的临时表:

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

zwghvu4y3#

使用此查询...

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
vjhs03f7

vjhs03f74#

已在SQL Server 2019上试用,不是*MySQL

UPDATE table_name SET COLUMN_ONE = COLUMN_TWO, COLUMN_TWO = COLUMN_ONE

这将把数据从column_one交换到column_two,反之亦然,不需要创建新的表或临时列。

以供参考。

相关问题