0

テーブルptb_messagesを更新し、2つの列のデータを切り替えるクエリを試して実行したいと思っています。たとえば、テーブルは次のとおりです。

id  |  to_user_id  |  from_user_id  | 

1         4                5
2         5                6
3         7                9

だから私が試してやりたいのは、from_user_idの値をto_user_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");

誰かが私を助けてくれることを願っています。

4

2 に答える 2

2

さて、mysql には という概念がありuser variableます。これを利用して値を保存し、列に設定してスワップすることができます。

UPDATE Table1 
SET    to_user_id = from_user_id,
       from_user_id = @r1
WHERE  @r1 := to_user_id

ここを参照してください:http://www.sqlfiddle.com/#!2/8cd6a/1

テーブルを自分で結合するのはどうですか?

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

ここを参照してください:http://www.sqlfiddle.com/#!2/d6b4f/1

于 2013-04-09T02:18:51.930 に答える