我的数据库中有2个表MST_customer和TRN_sales,包含损坏的条目 . 下一个查询返回损坏的条目:
SELECT TRN_sales.cust_no
FROM MST_customer
RIGHT OUTER JOIN TRN_sales
ON MST_customer.cust_no = TRN_sales.cust_no
WHERE MST_customer.cust_name IS NULL;
我试图删除它们执行:
DELETE FROM mydbB.TRN_sales
WHERE TRN_sales.cust_no IN (
SELECT TRN_sales.cust_no
FROM MST_customer
RIGHT OUTER JOIN TRN_sales
ON MST_customer.cust_no = TRN_sales.cust_no
WHERE MST_customer.cust_name IS NULL
);
但是我得到了下一个错误:
You can't specify target table 'TRN_sales' for update in FROM clause
我该如何解决这个问题?
2 回答
要更多地了解"the safe side",您应该指定要从中删除的表(此处:别名
s
):Personnaly我相信,这个
LEFT JOIN
更容易阅读,虽然你当然可以对你的RIGHT JOIN
版本做同样的事情 .为什么你不尝试下面 -
注意:为了安全起见,请在执行此查询之前保留两个表的备份 .