如何删除同一表中的记录(使用WHERE EXIST或INNER JOIN)



我有两个表(product和sales_tran(,它有两个匹配的列,即product_name。我尝试使用INNER JOIN删除同一表中的匹配记录,但遇到错误你能帮我就下面的问题提出建议吗?我想删除记录

DELETE FROM product
INNER JOIN sales_tran ON product.product_name = sales_tran.product_name ; 

在nysql中您可以删除与sales_tran 有关系的所有行

DELETE product FROM product p
INNER JOIN sales_tran st ON p.product_name = st.product_name ; 

在sql Server中,它看起来与相同

DELETE p
FROM product p
INNER JOIN sales_tran st
ON p.product_name = st.product_name ;

对于MySQL,为要删除的表指定别名

DELETE p
FROM product p
INNER JOIN sales_tran s ON p.product_name = s.product_name ;

或者您可以使用子查询

delete 
from product
where product_name in (
select product_name 
from sales_tran 
)