2014-01-06 57 views
0

加入Update語句,我需要從表中與Informix的

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

選擇EMPLOYEE_ID並將其插入到一個場在同一個表

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中這樣做。

+0

將等號後的查詢置於符號之後 – Santhosh

+0

感謝您的回覆......這是永遠的,並給我以下錯誤... 18:18:39 [UPDATE - 0 row(s),0.000 secs] [錯誤代碼:-79716,SQL狀態:IX000] System or internal錯誤java.net.SocketTimeoutException:讀取超時 ...執行1個語句,影響0行,執行/讀取時間:0.000/0。000秒[0成功,0警告,1錯誤] 我知道它有什麼問題,因爲它就像兩次聲明相同的表。如果你認爲它會奏效,你能否爲我寫出整個聲明。 。 謝謝 – BKRaja

+1

檢查此問題是否存在以下問題:http://stackoverflow.com/questions/19004605/using-subquery-in-an-update-always-requires-subquery-in-a-where-clause/19027289#19027289幫助你解決你的問題。 – ceinmart

回答

0

我認爲你需要檢查你的數據 做以下檢查

表:TEMP_DATA表有以下數據

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

表:Employee表中有下列值

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

2.

select supervisor_name from temp_data 
    select last_name from employee 

1記錄命名索蘭奇匹配的標識。所以,你需要更新索蘭奇

看到的結果

注意你需要多少行更新(這裏是2)

首先試試你的選擇查詢,投入更新查詢 那麼你說的標識它gaves錯誤..

那麼試試這個:

作如下修改您的選擇查詢,並把它變成你的更新查詢。

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行更新或不... ????????

+0

Woww ..感謝您花時間回覆。對此,我真的非常感激。 我的問題是,我指定的兩個查詢單獨工作正常。我只是混淆瞭如何在兩個查詢中爲兩個表中的每一個做出兩個聲明... 請參閱粗體 'update emp set emp.supervisor_id = select ** emp_id emp_id,temp_data td ** from **僱員爲emp ** 內部連接** temp_table爲td **' – BKRaja

0

試試這個,它也成功地更新您的數據。

合併到僱員爲EMP USING TEMP_DATA爲td ON emp.emp_id = td.emp_id 和(低級(td.supervisor_name)等低級(emp.last_name) 或 低級(td.supervisor_name)等低級(emp.firstname)) WHEN MATCHED THEN UPDATE set emp.supervisor_id = emp.emp_id