У меня есть две таблицы с одинаковой схемой. Давайте назовем их TestTable и TestTableTemp . Мне нужно скопировать только два столбца из TestTableTemp в TestTable, не нарушая другие данные. Строки в TestTable являются подмножеством строк в TestTableTemp. Допустим, столбцы, которые мне нужно скопировать, называются Column1 и Column2 и имеют одинаковые ссылки на первичные ключи по столбцу primaryKey .
В mysql я считаю, что это можно сделать как таковое или нечто подобное:
UPDATE TestTable, TestTableTemp
SET TestTable.Column1 = TestTableTemp.Column1, TestTable.Column2 = TestTableTemp.Column2
WHERE TestTable.primaryKey = TestTableTemp.primaryKey
Sqlite не позволяет определять несколько таблиц в операторе обновления, что можно увидеть в их справочных данных здесь: http://www.sqlite.org/lang_update.html
Лучшее, что я мог придумать, такое:
UPDATE TestTable SET
Column1 = (select TestTableTemp.Column1 from TestTableTemp, TestTable where TestTable.primaryKey = TestTableTemp.primaryKey),
Column2 = (select TestTableTemp.Column2 from TestTableTemp, TestTable where TestTable.primaryKey = TestTableTemp.primaryKey)
WHERE EXISTS(select * from TestTableTemp where TestTable.primaryKey = TestTableTemp.primaryKey"
Это дает мне синтаксическую ошибку рядом с "." Я предполагаю, что это потому, что я не могу ссылаться на TestTable в скалярных выражениях.
Кто-нибудь может указать мне правильное направление? Любая помощь очень ценится.
EDIT:
Я немного убрал второй запрос. Кажется, для столбца 1 и столбца 2 задается первая строка из этого столбца из TestTableTemp.