このクエリが Informix で可能かどうかを知る必要があります。
insert into emp(emp_id, sal, desg)
values (111, (select salary from emp_sal where emp_id=222), 'xxx');
テーブル構造は次のとおりです。
emp : emp_id、名前、sal、desg
emp_sal : emp_id、sal
Informix では試していませんが、ほとんどのデータベースがサポートしていますinsert into ... select
:
insert into emp(emp_id, sal, desg)
select 111, salary, 'xxx'
from emp_sal where emp_id = 222;
サブクエリが単一の行を返す限り、記述されたステートメントは機能するはずです。
コンセプトの証明:
SQL[1871]: create temp table x(i integer, j integer, s char(10));
SQL[1872]: insert into x(i,j,s) values(1, (select atomic_number from elements where name = 'Carbon'), "Elephant");
SQL[1873]: select * from x;
1|6|Elephant
SQL[1874]:
私のテストデータベースには要素のテーブルがあるため、サブセレクトが機能します。警告: 7.31 ではなく、11.70.FC6 でテストしました。かなり古いバージョンの Informix を使用しているように見える場合、マイレージは異なる場合があります (7.31 は Y2K、IIRC の前に最初にリリースされましたが、7.31.UDn は 2000 年代半ば、おそらく 2005 年頃のフィックスパックでした)。