Обидва відповіді, як я бачу, добре працюють в Informix, і в основному є стандартними SQL. Тобто, позначення:
INSERT INTO target_table[(<column-list>)] SELECT ... FROM ...;
прекрасно працює з Informix і, я би очікував, всіма СУБД. (Колись 5 і більше років тому це MySQL не завжди підтримував; тепер він має гідну підтримку такого типу стандартного синтаксису SQL і, AFAIK, він би працював нормально в цій нотації.) Список стовпців є необов'язковим, але вказує цільові стовпці послідовно, тому перший стовпець результату SELECT перейде до першого перерахованого стовпця тощо. За відсутності списку стовпців перший стовпець результату SELECT переходить у перший стовпець цільової таблиці.
Що може відрізнятись між системами, це позначення, які використовуються для ідентифікації таблиць у різних базах даних - стандарт не має нічого сказати про операції міжбаза даних (не кажучи вже про міжскладні СУБД). За допомогою Informix ви можете використовувати такі позначення для ідентифікації таблиці:
[dbase[@server]:][owner.]table
Тобто ви можете вказати базу даних, необов'язково ідентифікуючи сервер, на якому розміщується ця база даних, якщо її немає на поточному сервері, а потім слідує необов'язковий власник, крапка та нарешті власне ім’я таблиці. Стандарт SQL використовує схему терміна для того, що Informix викликає власника. Таким чином, в Informix будь-яка з наведених нижче позначень може ідентифікувати таблицю:
table
"owner".table
dbase:table
dbase:owner.table
dbase@server:table
dbase@server:owner.table
Власника взагалі не потрібно цитувати; однак якщо ви користуєтесь цитатами, вам потрібно правильно вказати ім’я власника - воно стане чутливим до регістру. Це є:
someone.table
"someone".table
SOMEONE.table
всі ідентифікують одну і ту ж таблицю. З Informix є легке ускладнення з базами даних MODE ANSI, де імена власників, як правило, перетворюються на верхній регістр (виняток informix). Тобто, в базі даних MODE ANSI (зазвичай не використовується) ви можете написати:
CREATE TABLE someone.table ( ... )
а ім'я власника в системному каталозі буде "НЕКОМИ", а не "хтось". Якщо ви вкладете ім’я власника у подвійні лапки, воно діє як обмежений ідентифікатор. За допомогою стандартного SQL обмежені ідентифікатори можуть використовуватися у багатьох місцях. За допомогою Informix ви можете використовувати їх лише навколо імен власників - в інших контекстах Informix розглядає як рядки з одноцитованими, так і з подвійними цитатами, як рядки, а не розділяти рядки з одним котируванням як рядки та рядки з подвійним цитуванням як розмежовані ідентифікатори. (Звичайно, просто для повноти існує змінна середовище DELIMIDENT, яку можна встановити - на будь-яке значення, але Y найбезпечніше - щоб вказати, що подвійні лапки завжди оточують обмежені ідентифікатори, а одиночні лапки завжди оточують рядки.)
Зауважте, що MS SQL Server вдається використовувати [розмежовані ідентифікатори], укладені в квадратні дужки. Мені це дивно виглядає, і, звичайно, не є частиною стандарту SQL.