我是SQL的新手,所以感谢您的帮助并请求您的原谅,如果这很简单,我找不到在其他相关帖子中帮助我的答案。
我需要表PRC_FIX
和IM_ITEM
。它们都有一列ITEM_NO
。我想在PRC_FIX
中删除IM_ITEM.ITEM_VEND_NO
等于TOYM
的行。
我需要做某种加入吗?再次感谢您的帮助。
编辑:我不需要设置级联DELETE的帮助。我在询问当PRC_FIX
中的匹配行符合特定条件时,如何从仅IM_ITEM
删除一行。
答案 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'
我希望对你有所帮助:)。