2016-09-23 181 views
0

我有表xx_org,xx_people和xx_asg。 org_id在xx_asg和xx_org之間是常見的,asg_id在xx_people和xx_asg之間是常見的。根據sql條件從表中刪除

現在我希望將這些組織從xx_org中刪除,其org_id不在xx_asg中,xx_people中具有列值extra_info的人員id爲'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 thsoe人誰擁有EXTRA_INFO爲「ITEM_OTB」,這些人的組織IDS也應予以刪除

回答

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');