使用Join in Informix更新语句

时间:2014-01-06 23:10:09

标签: informix update-statement

我需要从表中选择employee_id

select emp_id 
from employee emp, temp_data td where lower(td.supervisor_name) like lower(emp.last_name||emp.firstname)

并将其插入同一个表中的字段

update emp set emp.supervisor_id = **The value returned from the previous query**
from employee as emp
Inner join temp_table as td
on td.emp_id = emp.emp_id

有什么办法可以实现吗?问题是我在更新语句中设置它时指的是同一个表中的另一个字段。如果还有其他路由我可以告诉我...我在Informix中这样做。

2 个答案:

答案 0 :(得分:0)

我认为你需要检查你的数据 检查后完成

表:temp_data表有以下数据

supervisor_name
------------------------------
kaushal
abc
solanki
def

表:员工表具有以下值

firstname  last_name
------------------------------
ajay       jadeja 
sachin     solanki 
kaushal    kumar
manish     galav 

1

 select  supervisor_name from temp_data 
 select  firstname from employee  

注意结果
 1条记录名为kaushal,匹配。所以你需要更新kaushal的ID

2

   select  supervisor_name from temp_data 
   select  last_name from employee  

1条名为solanki的记录匹配。所以你需要更新solanki的ID

查看结果

注意您需要更新多少行(此处为2)

首先尝试将您的选择查询放入更新查询中 然后你说它给错误..

然后试试这个:

修改了您的选择查询,如下所示,并将其放入更新查询中。

select emp_id 
from employee emp, temp_data td 
where 
( lower(td.supervisor_name) like lower(emp.last_name ) 
or 
lower(td.supervisor_name) like (emp.firstname) )
)

看到结果2行更新与否...... ????????

答案 1 :(得分:0)

尝试此操作也可以成功更新您的数据。

将员工纳入员工身份 使用temp_data作为td ON emp.emp_id = td.emp_id    和(lower(td.supervisor_name)like lower(emp.last_name)          要么          lower(td.supervisor_name)like lower(emp.firstname)) 匹配然后更新设置emp.supervisor_id = emp.emp_id