3

只需要知道这个查询在 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,萨尔

4

2 回答 2

8

我没有尝试使用 Informix,但大多数数据库都支持insert into ... select

insert into emp(emp_id, sal, desg) 
select 111, salary, 'xxx' 
from emp_sal where emp_id = 222;
于 2013-04-04T04:44:24.170 回答
1

只要子查询返回单行,所写的语句就应该起作用。

概念证明:

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]: 

我的测试数据库中有一个元素表,因此子选择对我有用。警告:我测试的是 11.70.FC6,而不是 7.31。考虑到您似乎使用的是更旧版本的 Informix(7.31 在 Y2K、IIRC 之前首次发布,尽管 7.31.UDn 是 2000 年代中期的修复包,可能大约在 2005 年左右),您的里程可能会有所不同。

于 2013-04-04T17:07:54.097 回答