2013-05-12 65 views
-1

我有表company_emp。在該表中我有涉及員工6列:更新錯誤導致的查詢

  1. EMPID
  2. 的ename
  3. DOB
  4. 司法部,...

我有另一個表稱爲bday。在那我只有2列; empid和dob。

我有這個疑問:

select empid, dob 
from company_emp 
where dob like '01/05/2011' 

它顯示了一些員工名單。

我以同樣的方式查詢bday表,它列出了一些員工。

現在我想更新company_emp表中的日期爲'01/05/2011'的員工。

我已經嘗試了這樣的查詢:

update company_name a 
set dob = (select dob from bday b 
      where b.empid=a.empid 
       and to_char(a.dob,'dd/mm/yyyy') = '01/05/2011'} 

然後該行中的所有記錄成爲空。我該如何解決這個問題?

回答

1

您正在更新company_name/emp表中的每一行。

您可以修復與相關子查詢,以確保該行是否存在,或者更有效地通過放置一個主要或唯一鍵上bday.empid和查詢:

update (
    select c.dob to_dob, 
     d.dob from_dob 
    from company_emp c join dob d on (c.empid = d.empid) 
    where d.dob = date '2011-05-01') 
set to_dob = from_dob 

語法未經測試。

+0

哈,我錯過了重要的一點......再試一次。 – 2013-05-12 10:07:26