0

我需要从表中选择一个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 中做。

4

2 回答 2

0

试试这个也成功更新你的数据。

MERGE INTO employee as emp USING temp_data as td ON emp.emp_id = td.emp_id 和( lower(td.supervisor_name) like lower(emp.last_name) or lower(td.supervisor_name) like lower(emp.firstname) ) WHEN MATCHED THEN更新设置 emp.supervisor_id = emp.emp_id

于 2014-01-08T06:20:01.103 回答
0

我认为您需要在检查后检查您的数据

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


请注意名为 kaushal的结果1 记录 match 。所以你需要更新 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 行更新与否 ...??????????

于 2014-01-08T05:42:38.650 回答