同じテーブル内のある列から別の列にデータをコピーするにはどうすればよいですか?


回答:


464

これはどう

UPDATE table SET columnB = columnA;

これにより、すべての行が更新されます。


1
これは、古い値を他の列に転送して最初の列を更新する場合にも機能しますUPDATE table SET columnA = 'new value', columnB = columnA。他の答えのように-必要なものだけを更新するWHERE句を忘れないでください。
カールディオルタス

5
答えがとてもシンプルなときに、各レコードでループを実行するいくつかの複雑な
プロシージャで

6
@deFreitas賢い人が私に言った:SQLで何かを達成するためにループを書くことを考えているなら、それは間違っているのです。
ダニエルパトリック

95
UPDATE table_name SET
    destination_column_name=orig_column_name
WHERE condition_if_necessary

10
@マーク、これは実際に理にかなっています、なぜこれは反対投票ですか?ある列から別の列に日付値をコピーする必要があり、すべてではなく一部の列にのみ適用される状況がありました。したがって、ステートメントにWHEREを含める必要があります。
finnTheHumin 2014年

5
@finnTheHuman質問は、「すべてのレコードからデータをコピーする」方法を尋ねます。これは、以前の回答が正しく回答するため、何も追加されません
mmmmmm

7
@Mark「これは以前に受け入れられていた回答とどう違うのですか?」、WHERE句があります。「だからこれは何も追加しない」、私は同意しない、それは何かを追加します。WHERE句IF NECESSARYを含めるのは良い点です。私たちは回答の反対投票に責任を負うべきです。憎しみが嫌い
finnTheHumin

私の場合、last_seen列を追加しました。UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL
ラッキードナルド2017年

私はあなたのいずれかに同意しません。しかし、誰と言っても構わないと思います!。Where句は御馳走のように機能します
Andrew Day

0

これにより、セーフモードが有効になっていない場合、その列のすべての行が更新されます。

UPDATE table SET columnB = columnA;

セーフモードが有効になっている場合は、where句を使用する必要があります。基本的には0より大きい主キーを使用していますが、すべて更新されます

UPDATE table SET columnB = columnA where table.column>0;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.