我还是SQL新手,必须完成手头的任务。任务是: A"假的"用户订了几个订单。删除用户帐户及其所有订单。 这意味着从3个表中删除: 订单详情 命令 客户
ORDERDETAIL和ORDERS的FK为ORDERID,ORDERS和CUSTOMERS共享CUSTOMERID的FK。我开始使用这段代码:
DELETE ORDERDETAIL.ORDERID
FROM ORDERDETAIL
INNER JOIN ORDERS
ON ORDERDETAIL.ORDERID = ORDERS.ORDERID
WHERE ORDERS.CUSTOMERID = '12341';
刚开始,但即便失败。
我可以使用哪些代码删除在ORDERDETAIL和ORDERS中共享相同ORDERID的所有行以及来自CUSTOMER和ORDERS的CUSTOMERID?
感谢您的帮助!
答案 0 :(得分:1)
您想使用子查询来查找要在子表中删除的orderid
:
delete from orderdetail where orderid in (
select orderid from orders
where customerid = '12341'
);
然后您就可以删除相应的订单:
delete from orders
where customerid = '12341';
如果您的表设置为cascading delete,您只需执行第二个删除语句(无需先执行第一个语句)。