2017-08-05 330 views
0

我是SQL新手,所以我感謝您的幫助,並請求您的原諒,如果這是簡單的,我找不到幫助我在其他相關職位的答案。DELETE FROM table WHERE在其他表中的條件符合

我要表PRC_FIXIM_ITEM。他們都有一列ITEM_NO。我想刪除PRC_FIX中的一行,其中IM_ITEM.ITEM_VEND_NO等於TOYM

我需要做某種連接嗎?再次感謝你的幫助。

編輯:我不需要幫助設置級聯DELETE。我要求如何在IM_ITEM中的匹配行滿足特定條件時,僅從PRC_FIX刪除一行。

+0

我的答案中的腳本只會隨意刪除'PRC_FIX'。試試看,讓我知道結果。 –

回答

0

聰明的做法:

DELETE PRC_FIX 
FROM PRC_FIX 
INNER JOIN IM_ITEM ON IM_ITEM.ITEM_NO = PRC_FIX.ITEM_NO 
      AND IM_ITEM.ITEM_VEND_NO = 'TOYM' 

我希望對你有所幫助:)

+0

我會試試這個。謝謝 – enano2054

+0

這樣做。謝謝! – enano2054

2

正確的方法是設置級聯刪除外鍵約束。

首先,刪除不存在的:

delete f from prc_fix f 
    where not exists (select 1 from im_item i where i.item_no = f.item_no); 

然後,自動刪除行,當他們從im_item刪除:

alter table prc_fix add constraint fk_prc_fix_item_no 
    foreign key (im_item) references im_item(item_no) on delete cascade; 
+0

當它們從IM_ITEM中刪除時,它們已經設置爲從PRC_FIX中刪除。我希望在符合某個標準時只從PRC_FIX中刪除 – enano2054

1
DELETE FROM PRC_FIX 
WHERE ITEM_NO= 
(SELECT ITEM_NO FROM IM_ITEM WHERE ITEM_VEND_NO='TOYM') 
相關問題