INSERT [LOW_PRIORITY] [IGNORE] [INTO] tbl_name [(column list)] SELECT ...
Команда INSERT ... SELECT
обеспечивает возможность
быстрого внесения большого
количества строк в таблицу из
одной или более таблиц.
INSERT INTO tblTemp2 (fldID) SELECT tblTemp1.fldOrder_ID
FROM tblTemp1
WHERE tblTemp1.fldOrder_ID > 100;
Для команды INSERT ... SELECT
необходимо соблюдение следующих
условий:
Целевая таблица команды
INSERT не должна
появляться в утверждении
FROM части
SELECT данного запроса,
поскольку в ANSI SQL запрещено
производить выборку из той же
таблицы, в которую производится
вставка. (Проблема заключается
в том, что операция
SELECT, возможно, найдет
записи, которые были внесены
ранее в течение того же самого
прогона команды. При
использовании команд, внутри
которых содержатся
многоступенчатые выборки,
можно легко попасть в очень
запутанную ситуацию!)
Столбцы AUTO_INCREMENT
работают, как обычно.
Для получения информации о
данном запросе можно
использовать функцию C API
mysql_info(). See
Раздел 6.4.3, «Синтаксис оператора INSERT».
Чтобы гарантировать
возможность использования
журнала обновлений/двоичного
журнала для восстановления
исходного состояния таблиц, в
MySQL во время выполнения команды
INSERT ... SELECT
параллельные вставки не
разрешаются.
Разумеется, для перезаписи старых
строк можно вместо INSERT
использовать REPLACE.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
