Я не на 100% ясно из вашего описания, что именно вам нужно, но я думаю, что это примерно так:
Сначала запустите обновление T1 с соответствующими URL-адресами в T2 ...
UPDATE T1
SET T1.Cat = T2.Cat
FROM Table1 T1
INNER JOIN Table2 T2 on T1.URL = T2.URL
Затем вставьте дополнительные записи из T2 в T1 ....
INSERT INTO Table1 (id, url, cat)
SELECT T2.id, T2.URL, T2.Cat
FROM Table2 T2
LEFT JOIN Table1 T1 on T2.URL = T1.URL
WHERE T1.URL IS NULL
ПРИМЕЧАНИЯ:
- вы не указали базу данных и версию, которую выИспользуем.Один оператор
MERGE
также может быть опцией. - Непонятно, является ли ID полем идентификатора / автоинкремента.Если это так, удалите идентификатор из оператора вставки
ОБНОВЛЕНИЕ SQL Lite
Я только использую SQLLite при передаче, так что принимайте это с крошкой соли,Однако, похоже, что вам нужно выполнить две команды ATTACH DATABASE
( docs ), чтобы убедиться, что DB1 и DB2 оба подключены к соединению.Примерно так:
ATTACH DATABASE filename AS database-name;
После того, как две базы данных присоединены, вы можете добавить имена таблиц к имени базы данных.Допустим, вы присоединяете Table1 как DB_Target и Table2 как DB_Source, при котором выбор будет эволюционировать в нечто вроде ...
UPDATE T1
SET T1.Cat = T2.Cat
FROM DB_Target.Table1 T1
INNER JOIN DB_Source.Table2 T2 on T1.URL = T2.URL
Вот статья, которая проведет вас через немногоглубина.