2012-01-25 6 views
110

ある列から別の列に値をコピーするにはどうしたらいいですか?私が持っている:同じ表のある列から別の列に値をコピーする

Database name: list 
number | test 
123456 | 123456 
123486 | 123486 
232344 | 232344 

私は何mysqlのクエリを持っている必要があります。

Database name: list 
number | test 
123456 | somedata 
123486 | somedata1 
232344 | 34 

は私がしたいですか?

答えて

249
UPDATE `table` SET test=number 
+14

開発者が一般人のように思ったことはまれなケースです。 – Zaxter

+3

更新の理解がいかに悪いかを示すだけです。 –

+3

あなたが 'update command'に慣れていない場合は注意してください。** WHERE **句がなければ、このコマンドはテーブル内の**すべての**レコードを更新します。 – gmo

8

はこれを試してみてください。

update `list` 
set `test` = `number` 
+0

は 'list'はdb名ではありませんか? –

+2

かもしれません。私はそれがタイプミスだと思う。 –

+0

リストは

user2439124

23
UPDATE `table_name` SET `test` = `number` 

ます。また、プロセス内の任意の数学的な変更を行うか、値を変更するためにMySQLの機能を使用することができます。

UPDATE `list` SET `test` = `number` 

それは「数」からすべての値のコピーを作成し、それを貼り付けるには ":あなたが手順でそれを行うことができます

-6

もので、私は、次のこの

DELIMITER $$ 
CREATE PROCEDURE copyTo() 
     BEGIN 
       DECLARE x INT; 
      DECLARE str varchar(45); 
       SET x = 1; 
      set str = ''; 
       WHILE x < 5 DO 
       set str = (select source_col from emp where id=x); 
      update emp set target_col =str where id=x;  
      SET x = x + 1; 
       END WHILE; 

     END$$ 
    DELIMITER ; 
+11

ですKISSの原理は普通の死んでいるようです... – NemoStein

+0

ここでKISSは "Keep it simple、stupid" – nitinr708

1

試しするための手順を持っていますテスト」私のために働いた後

1

..

  1. クエリエディタアプリケーションでセーフモードを使用していないことを確認してください。もしそうなら、それを無効にしてください!
  2. その後 値の列col1と条件列COL3を対象、 'test_update_cmd' と言うテーブルに対してSQLコマンド

を以下のソース値の列col2を実行します -

UPDATE test_update_cmd SET col1=col2 WHERE col3='value'; 

がんばろう!

1

用心:更新列の順序が

GOOD重要です:私が欲しいのはPrevStatus

にステータスの既存の値を保存し
UPDATE Collections SET PrevStatus=Status, Status=44 WHERE ID=1487496; 

BAD:ステータス& PrevStatusは両方として終わります44

UPDATE Collections SET Status=44, PrevStatus=Status WHERE ID=1487496; 
関連する問題