Sql 对于Informix中的一列,插入带有select的语句

Sql 对于Informix中的一列,插入带有select的语句,sql,informix,Sql,Informix,只需要知道这个查询在Informix中是否可行 insert into emp(emp_id, sal, desg) values (111, (select salary from emp_sal where emp_id=222), 'xxx'); 表结构包括: 环境管理计划:环境管理计划id、名称、sal、设计 emp_sal:emp_id,sal我没有尝试使用Informix,但大多数数据库支持插入到。。。选择: insert into emp(emp_id, sal, desg)

只需要知道这个查询在Informix中是否可行

insert into emp(emp_id, sal, desg)
values (111, (select salary from emp_sal where emp_id=222), 'xxx');
表结构包括:

环境管理计划:环境管理计划id、名称、sal、设计


emp_sal:emp_id,sal

我没有尝试使用Informix,但大多数数据库支持
插入到。。。选择

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

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

您应该指定Informix版本,子查询支持正在从一个版本升级到另一个版本。我不确定是否要找到版本。。如果运行
selectdbinfo('version','full'),则返回“unixodbc2.2.8和dbaccess-v”7.31.UD6的isql-v从informix.systables(其中tabid=1
)中,应该可以得到服务器的完整版本字符串。如果没有,则服务器非常旧,应该在一段时间前就退役了。从表面上看,您似乎正在使用IDS 7.31.UD6,它已正式停止使用,并且已经使用了几年。