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

问题描述

我有2个表(product和sales_tran),它有2个匹配的列,即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 
)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...