根据sql中的条件从表中删除

时间:2016-09-23 07:05:51

标签: sql oracle

我有表xx_org,xx_people和xx_asg。 org_id在xx_asg和xx_org之间是通用的,而asg_id在xx_people和xx_asg之间是通用的。

现在我希望从xx_org中删除这些组织,其中org_id不在xx_asg中,而xx_people中的人员id具有列值extra_info为' ITEM_OTB'。

XX_ORG                 XX_PEOPLE                        XX_ASG

ORG_ID                 PERSON_ID                        ASG_ID
ORG_NAME               PERSON_NAME                      ASG_NAME
LEGAL_ENTITY           PERSON_NUMBER                    ORG_ID
                       ASG_ID
                       EXTRA_INFO

DELETE FROM XX_ORG WHERE 
ORG_ID NOT IN (SELECT DISTINCT ORG_ID FROM XX_ORG);

我如何将我的第二个要求纳入xx_person的那些人,他们将extra_info作为' ITEM_OTB' ,那些人的组织也应该被删除

1 个答案:

答案 0 :(得分:1)

如果我理解正确,我们希望删除除asg中存在的所有组织以外的所有组织,这些组织的额外信息等于ITEM_OTB。

DELETE  
FROM        XX_ORG
WHERE       ORG_ID NOT IN (
                SELECT      DISTINCT a.ORG_ID
                FROM        XX_ASG a
                            INNER JOIN XX_PEOPLE p ON a.ASG_ID = p.ASG_ID
                WHERE       p.EXTRA_INFO = 'ITEM_OTB');