使用Update将Row复制到另一个表中

时间:2011-08-08 08:49:29

标签: mysql sql database

好的,标题可能很难理解,但这就是我想要做的。

我有一个包含几列的表'A'。 我有一个表'B'与完全相同的列。

在我的程序流程中,我从'A'插入几行到'B'(一种临时缓存)。 “A”中的列数据可能会发生变化,但是当有人点击“恢复”按钮时,我想将这些行从“B”复制回“A”并覆盖那些与我想要复制的行相同的行。 B”。

E.g。

Table A:

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

在流程中i备份id 1和2

Table B:

1  :      Hi |
2  :      Friends

现在我做了一些事情,表格A改变了一下

Table A (changed):

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

现在我意识到我的更改是错误的,并且我想将ID为1和2的记录放回原始状态,从表'B'开始。

是否有一个'简单'的sql来做这件事,而不是逐个获取这些id的1并将其更新1?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以使用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