在Informix中仅为一列插入select语句

时间:2013-04-04 04:32:27

标签: sql informix

只需要知道Informix中是否可以进行此查询。

insert into emp(emp_id, sal, desg)
values (111, (select salary from emp_sal where emp_id=222), 'xxx');

表结构是:

emp :emp_id,name,sal,desg

emp_sal :emp_id,sal

2 个答案:

答案 0 :(得分:8)

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

insert into emp(emp_id, sal, desg) 
select 111, salary, 'xxx' 
from emp_sal where emp_id = 222;

答案 1 :(得分: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年)。