Oracle 错误地更新查询结果
我有一张名为Oracle 错误地更新查询结果,oracle,oracle11g,Oracle,Oracle11g,我有一张名为company\u emp的表格。在该表中,我有6列与员工相关: 埃皮德 艾娜 多巴哥 司法部 我有另一个名为bday的表。因为我只有两列;empid和dob 我有一个疑问: select empid, dob from company_emp where dob like '01/05/2011' 它显示了一些员工列表 我用同样的方法查询了表bday,它列出了一些员工 现在我想更新日期为“2011年5月1日”的员工的公司emp表 我尝试过这样的查询: update compa
company\u emp
的表格。在该表中,我有6列与员工相关:
bday
的表。因为我只有两列;empid和dob
我有一个疑问:
select empid, dob
from company_emp
where dob like '01/05/2011'
它显示了一些员工列表
我用同样的方法查询了表bday,它列出了一些员工
现在我想更新日期为“2011年5月1日”的员工的公司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'}
然后该行中的所有记录都将变为空。如何修复此查询?您正在更新公司名称/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
语法未测试。哈,我错过了重要的一点。。。再试一次。