如何创建SQL DELETE语句以删除第3个表中的行?

Spo*_*ude 3 sql sqlite

这是我的SQLite数据库的结构: 在此输入图像描述

我试图删除属于选择OrderInfo.Cust_ID的所有OrderData,它属于特定的CustData.Cust_ID.这是我的DELETE语句,它给出了错误:"没有这样的列:CustData.Customer_ID"

DELETE FROM OrderData
   WHERE CustData.Customer_ID = OrderInfo.Cust_ID 
   AND OrderData.Order_ID = OrderInfo.Order_ID 
   AND CustData.Bus_Name = 'Albertsons' 
Run Code Online (Sandbox Code Playgroud)

我知道SQLite不支持DELETE语句中的JOIN,所以我留下了WHERE和ANDs; 有人可以告诉我正确的方法吗?

Pau*_*sik 11

您可以尝试使用IN子句的子查询.就像是:

DELETE FROM OrderData WHERE OrderData.Order_ID IN
(SELECT OrderInfo.Order_ID 
FROM OrderInfo
JOIN CustData on OrderData.Order_ID = OrderInfo.Order_ID 
WHERE CustData.Bus_Name = 'Albertsons')
Run Code Online (Sandbox Code Playgroud)

在删除之前测试查询只需执行以下操作:(将返回将由删除查询删除的所有行)

SELECT * FROM OrderData WHERE OrderData.Order_ID IN
(SELECT OrderInfo.Order_ID 
FROM OrderInfo
JOIN CustData on OrderData.Order_ID = OrderInfo.Order_ID 
WHERE CustData.Bus_Name = 'Albertsons')
Run Code Online (Sandbox Code Playgroud)