2011-08-08 11 views
0

名前がわかりにくいかもしれませんが、これは私がしたいことです。更新を含む別のテーブルに行をコピーする

私はいくつかの列を持つテーブル 'A'を持っています。 私は全く同じ列のテーブル 'B'を持っています。

私のプログラムフローでは、 'A'から 'B'(一時キャッシュの一種)に数行を挿入します。 'A'の列データは変更されることがありますが、誰かが '復元'ボタンをクリックすると、 'B'の行を 'A'に戻してコピーしたい行と同じIDで上書きします'B'。

など。

私はバックアップID 1および2

Table B: 

1 :  Hi | 
2 :  Friends 

流れの間に

Table A: 

1 :  Hi | 
2 :  Friends | 
3 :  What's up 

今、私はいくつかのものと、テーブルAはビット

Table A (changed): 

1 :  Hi diddely doo | 
2 :  Amigo's | 
3 :  What's up 

を変更する今、私は私の変更が間違っている認識んし、 id 1と2のレコードをテーブル 'B'から元の状態に戻したいと思います。

このIDの1を1ずつ取り出して1ずつ更新することなく、それを行う '単純な' SQLはありますか?

ありがとうございます!

+0

あなたのスクリプトは、これらの2つの真ん中で死んだ場合はどうなるでしょうか? –

答えて

0

あなたはJOIN in UPDATE statementsを使用することができます。

UPDATE ta SET ta.text = tb.text 
INNER JOIN tb ON ta.id = tb.id 

または暗黙的なと参加:あなたが削除して再挿入することができます

UPDATE ta, tb SET ta.text = tb.text 
WHERE ta.id = tb.id 

両方のテーブルが同じを持っている場合、その方法は、あなたが列を指定する必要はありませんテーブルスキーム:

DELETE FROM ta WHERE id IN (SELECT id FROM tb) 

INSERT INTO ta 
SELECT * FROM tb 
+0

さて、私はその1つを知っているが、列がたくさんある場合は、かなりのSQLクエリを持っている...私はちょうど両方のテーブルが正確に同じ列を持っている場合、 'ショートカット'があるのだろうかと思っていた –

+1

あなたの質問は、あなたは "これらのidの1を1ずつ取り出して1ずつ更新したくない"と言っていたので、テーブルbのIDを選択して別々に更新するところを仮定しました。 – Jacob

+0

さて、私は例として1列を使用しましたが、実際には多くの列でそれをやりたいのです。 –

関連する問題