DELETE FROM表WHERE满足其他表中的条件

时间:2017-08-05 18:26:47

标签: mysql sql

我是SQL的新手,所以感谢您的帮助并请求您的原谅,如果这很简单,我找不到在其他相关帖子中帮助我的答案。

我需要表PRC_FIXIM_ITEM。它们都有一列ITEM_NO。我想在PRC_FIX中删除IM_ITEM.ITEM_VEND_NO等于TOYM的行。

我需要做某种加入吗?再次感谢您的帮助。

编辑:我不需要设置级联DELETE的帮助。我在询问当PRC_FIX中的匹配行符合特定条件时,如何从仅IM_ITEM删除一行。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

DELETE FROM PRC_FIX  
WHERE ITEM_NO=
(SELECT ITEM_NO FROM IM_ITEM WHERE ITEM_VEND_NO='TOYM')

答案 2 :(得分: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'

我希望对你有所帮助:)。