Синтаксис INSERT … SELECT

0
241

INSERT [LOW_PRIORITY] [IGNORE] [INTO] имя_таблицы [(списокстолбцов)]
SELECT …
С помощью INSERT … SELECT можно быстро вставить множество строк в одну таб­лицу из другой или других. Например:
INSERT INTO tbl temp2 (fld__ id) SELECT tbl_templ.fld_order_id
FROM tbl_templ WHERE tbl_templ. fld_order__id > 100;
В отношении оператора INSERT… SELECT соблюдаются следующие условия:

1. До версии MySQL 4.0.1 INSERT.. .SELECT неявно работал в режиме IGNORE. Начиная с MySQL 4.0.1, следует явно указывать IGNORE, чтобы игнорировать строки, которые нарушают условия уникальности ключей.
2. Не ИСПОЛЬЗОВать DELAYED С INSERT. . . SELECT.
3. До MySQL 4.0.14 целевая таблица оператора INSERT не могла встречаться в конструкции FROM части SELECT. Это ограничение снято в версии 4.0.14.
4. Столбцы AUTO_INCREMENT работают как обычно.

а Чтобы гарантировать, что бинарный журнал сможет быть использован для пересоздания оригинальных таблиц, MySQL не разрешает параллельные вставки во время выполнения INSERT.. .SELECT.
Вы можете использовать REPLACE вместо INSERT, чтобы перезаписывать старые стро­ки. REPLACE – это дополнение к INSERT IGNORE при обработке новых строк, которые со­держат значения уникальных ключей, дублирующих старые строки. Новые строки ис­пользуются для замены старых вместо того, чтобы просто отвергаться.