2013-05-12 68 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