-1

我有桌子叫company_emp。在该表中,我有 6 列与员工相关:

  1. 空的
  2. 姓名
  3. 出生日期
  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'}

然后该行中的所有记录都变为空。如何修复此查询?

4

1 回答 1

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

语法未经测试。

于 2013-05-12T08:56:55.877 回答