Вы можете использовать предложение FROM (с JOIN) в запросах INSERT..SELECT, а также в запросах UPDATE и / или DELETE.
Если вы хотите вставить новые записи в таблицу1 на основеДля данных из таблицы 2 вам может потребоваться только убедиться, что в таблицу 1 не будут пытаться вставить данные, которые могут нарушить какие-либо ограничения.
Предложение WHERE в вашем примере INSERT-запроса может быть недопустимым в этомслучай, так как кажется, что в таблице1 уже есть соответствующие записи.(Могут быть возможные исключительные сценарии, которые оправдывают такой запрос, но я не буду здесь подробно останавливаться на этих сценариях, поскольку ваш вопрос не указывает, что это уместно в вашем случае.)
Пример для вставки записей в таблицу1на основе (связанных) данных в таблице1 и таблице2:
INSERT INTO table1 (name)
SELECT table2.name
FROM table2 JOIN table1 ON table1.[ref] = table2.[ref] --use some sensible relation logic between table1 and table2 here
WHERE ... --check for valid data here
Если вы хотите обновить существующие записи в таблице1 данными из таблицы2, вы, вероятно, можете использовать запрос UPDATE вместо запроса INSERT.Опять же, вам следует убедиться, что вы не пытаетесь обновить данные, которые нарушают какие-либо ограничения.
Пример обновления записей в таблице1, которые соответствуют данным в таблице2:
UPDATE table1
SET name = table2.name
FROM table2
WHERE table2.id = table1.id --or use some other sensible relation logic between table1 and table2 here (together with other validation logic)
Вы также можетеиспользуйте предложение FROM в своем запросе UPDATE, но, похоже, вы должны быть осторожны, чтобы не включать целевую таблицу в это предложение FROM и не предоставлять правильное соединение с записями целевой таблицы в предложении WHERE.