在mysql中切换列数据?

在mysql中切换列数据?,mysql,Mysql,我想尝试运行一个查询,该查询将更新我的表ptb_消息并切换两列的数据,例如,我的表如下: id | to_user_id | from_user_id | 1 4 5 2 5 6 3 7 9 所以我想尝试做的是将值从\u user\u id切换到\u user\u id,反之亦然 在我意识到一旦我将一个表中的值复制到另一个表中,另一列中的原始数

我想尝试运行一个查询,该查询将更新我的表ptb_消息并切换两列的数据,例如,我的表如下:

id  |  to_user_id  |  from_user_id  | 

1         4                5
2         5                6
3         7                9
所以我想尝试做的是将值从\u user\u id切换到\u user\u id,反之亦然

在我意识到一旦我将一个表中的值复制到另一个表中,另一列中的原始数据就会被覆盖之前,我打算使用它

$sql = mysql_query("UPDATE ptb_messages SET ptb_messages.from_user_id=ptb_messages.to_user_id");
我真正需要的是一个交换函数

我真的不知道我该怎么做,但我想象它是这样的:

$sql = mysql_query("UPDATE ptb_messages SET to_user_id=from_user_id, from_user_id=to_user_id");

希望有人能帮我。

好吧,mysql有一个叫做
用户变量的概念。您可以利用这一点来存储值,并将其设置在要交换的列上

UPDATE Table1 
SET    to_user_id = from_user_id,
       from_user_id = @r1
WHERE  @r1 := to_user_id
请看这里:

把桌子连起来怎么样

UPDATE  Table1 a
        INNER JOIN Table1 b
          ON a.to_user_id = b.to_user_id AND
              a.from_user_id = b.from_user_id
SET     a.to_user_id = b.from_user_id,
        a.from_user_id = b.to_user_id

请看这里:

好吧,mysql有一个叫做
用户变量的概念。您可以利用这一点来存储值,并将其设置在要交换的列上

UPDATE Table1 
SET    to_user_id = from_user_id,
       from_user_id = @r1
WHERE  @r1 := to_user_id
请看这里:

把桌子连起来怎么样

UPDATE  Table1 a
        INNER JOIN Table1 b
          ON a.to_user_id = b.to_user_id AND
              a.from_user_id = b.from_user_id
SET     a.to_user_id = b.from_user_id,
        a.from_user_id = b.to_user_id

请看这里:

我将给出一个答案,尽管我认为“瘦管道”的答案更优雅一些

您可以创建一个临时表来存储其中的值


我将给出一个答案,尽管我认为“瘦烟斗”的答案更优雅一点

您可以创建一个临时表来存储其中的值


. 它们不再得到维护。看到了吗?改为了解,并使用or-将帮助您决定使用哪一种。您确定要使用PHP吗?请看这个-->。它们不再得到维护。看到了吗?改为了解,并使用or-将帮助您决定使用哪一种。您确定要使用PHP吗?看看这个-->仍然会给我同样的问题,它正在更新from_user_id并将其复制到to_user_id中,但to_user_id没有被复制到from_user_id中:/如果我没有弄错的话,您绝对不能保证to_user_id在from_user_id之前会被更新。我无法理解。它似乎在小提琴上起作用,对吧?请看我的更新答案。好的,你的更新在我看来很好,+1和干杯。但这仍然给了我同样的问题,它正在更新from_user_id并将其复制到to_user_id中,但to_user_id没有被复制到from_user_id中:/如果我没有弄错的话,您绝对不能保证to_user_id在from_user_id之前会被更新。我无法理解。它似乎在小提琴上起作用,对吗?请看我的更新答案。好的,你的更新在我看来很好,+1,干杯。