我有一个叫company_emp
的表。在该表中,我有6个与员工相关的列:
我有另一个名为bday
的表。因为我只有2列; empid和dob。
我有这个问题:
select empid, dob
from company_emp
where dob like '01/05/2011'
它显示了一些员工名单。
以同样的方式我用表bday查询它列出了一些员工。
现在我想更新日期为'01 / 05/2011'的员工的company_emp
表。
我尝试过这样的查询:
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'}
然后该行中的所有记录都变为空。如何解决此问题?
答案 0 :(得分: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
语法未经测试。