我一直在尝试通过谷歌搜索找到的许多解决方案,但没有一个与这个看似简单的任务一起工作。
在db2中,我想根据PO供应商和PO日期删除PO和PO行。
PO和PO行由PO编号链接。 (下面不干了)
DELETE FROM po, po_lines
WHERE po_lines.po_num = po.po_num
AND po.vendor = 'AAA' AND po.order_date = CURRENT DATE
TIA!
答案 0 :(得分:0)
Delete语句仅支持从单个表中删除行。您可以在2个语句中完成相同的操作:
DELETE FROM po_lines WHERE po_num IN
(
SELECT po.po_num FROM po_lines
JOIN po ON po_lines.po_num=po.po_num
WHERE po.vendor = 'AAA' AND po.order_date = CURRENT DATE
);
DELETE FROM po WHERE po.vendor = 'AAA' AND po.order_date = CURRENT DATE
答案 1 :(得分:0)
我认为不可能在单个DELETE
命令中从2个表中删除。可能是您可以使用2个删除语句创建stored procedure
并调用存储过程一次。
答案 2 :(得分:0)
没有必要加入,你必须使用2个查询
DELETE FROM po_lines pol
WHERE EXISTS
(
SELECT * FROM po
WHERE pol.po_num=po.po_num AND po.vendor = 'AAA' AND po.order_date = CURRENT DATE
);
DELETE FROM po WHERE po.vendor = 'AAA' AND po.order_date = CURRENT DATE;
答案 3 :(得分:0)
您可以从第一个表中删除行,然后从第二个表中删除行,而第一个表中不再存在关联的列值:
delete from secondtable dt where not exists (select 1 from secondtable st where st.id = dt.id)
答案 4 :(得分:0)
您应该使用with语句使用要删除的行/外键的ID创建一个临时表。
请参阅https://pw999.wordpress.com/2013/08/20/delete-from-multiple-tables-in-db2-in-a-single-query/以获取示例。 (链接指向此处后,Google的第二个结果)