代码之家  ›  专栏  ›  技术社区  ›  fallingdog

加入时删除未按预期工作oracle

  •  0
  • fallingdog  · 技术社区  · 7 年前

    我很难让我的删除生效。在这种情况下,如果行存在于源表中,我需要基于两列进行删除。

    我在表中有113843行。我的delete语句是:

    delete from process.designer_mm_px_current_state 
    where exists (select 1 from process.designer_mm_px_current_state dc
    join
    process.mm_px_current_state c
    on dc.soid = c.soid and dc.state_id = c.state_id)
    

    此报告删除了113843行。但我插入了一个仅在dc中的新行,因此应该在末尾有一行。此外:

    select count(1) from process.designer_mm_px_current_state dc
    join
    process.mm_px_current_state c
    on dc.soid = c.soid and dc.state_id = c.state_id
    

    返回113842行。正如我所料。我错过了什么?我在oracle系统中工作。。。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Ctznkane525    7 年前

    内部查询和外部查询之间没有引用。试试这个。Dc现在是您的外部参考。

    delete from process.designer_mm_px_current_state dc
    where exists (select 1 from
    process.mm_px_current_state c
    Where dc.soid = c.soid and dc.state_id = c.state_id)