Скопировать строку в другую таблицу с обновлением - PullRequest
0 голосов
/ 08 августа 2011

Хорошо, название может быть трудным для понимания, но это то, что я хочу сделать.

У меня есть таблица «А» с несколькими столбцами. У меня есть таблица "B" с точно такими же столбцами.

Во время выполнения программы я вставляю несколько строк из «A» в «B» (что-то вроде временного кэша). Данные столбца в «А» могут измениться, но когда кто-то нажимает кнопку «Восстановить», я хочу скопировать эти строки из «В» обратно в «А» и перезаписать эти строки с тем же идентификатором, что и те, из которых я хочу скопировать » B».

1007 * Е.Г. *

Table A:

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

Во время потока я делаю резервную копию id 1 и 2

Table B:

1  :      Hi |
2  :      Friends

Теперь я делаю кое-что, и таблица A немного меняется

Table A (changed):

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

Теперь я понимаю, что мои изменения неверны, и я хочу вернуть записи с идентификаторами 1 и 2 в исходное состояние из таблицы «B».

Есть ли «простой» sql для этого, не выбирая эти идентификаторы 1 на 1 и обновляя их 1 на 1?

Заранее спасибо!

1 Ответ

1 голос
/ 08 августа 2011

Вы можете использовать JOIN в выражениях UPDATE :

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...