使用oracle SQL识别父子记录并避免合并

时间:2015-07-23 20:28:47

标签: sql oracle parent-child

我要求使用SQL查询查找父子帐户,如果幸存者是Child且Loser是Parent,则避免合并过程。 我在表格x 中有以下格式的记录

Survivor       Loser
400-GIZ-514   400-1729E3

表x 是一个临时表,其中的记录存储在基表中 在基表中,这两条记录之间的关系是

          ROW_ID          PAR_OU_ID

Parent    400-1729E3      NULL
Child     400-GIZ-514     400-1729E3

请帮我查询以识别这些类型的记录并标记它们,以便它们不会被合并到夜间进程中。

2 个答案:

答案 0 :(得分:0)

此查询仅检索行没有匹配父项的记录:

SELECT * FROM BASE_TABLE A
 WHERE NOT EXISTS (SELECT 1 FROM BASE_TABLE B WHERE A.PAR_OU_ID = B.ROW_ID)

答案 1 :(得分:0)

应该能够使用

从临时表中删除记录
DELETE FROM tablex 
WHERE EXISTS (
    SELECT 1 
    FROM  basetable
    WHERE basetable.row_id = tablex.survivor
          AND basetable.par_ou_id = tablex.loser
    )