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
    

    语法未测试。

    哈,我错过了重要的一点。。。再试一次。