【问题标题】:How do I delete a record in a same table (use WHERE EXIST or INNER JOIN)?如何删除同一张表中的记录(使用 WHERE EXIST 或 INNER JOIN)?
【发布时间】:2020-08-18 15:56:21
【问题描述】:
我有 2 个表(product 和 sales_tran),它有 2 个匹配的列,即 product_name。我尝试使用 INNER JOIN 删除同一个表中的匹配记录但遇到错误
你能帮忙就我下面的查询提供建议吗?我想删除记录
DELETE FROM product
INNER JOIN sales_tran ON product.product_name = sales_tran.product_name ;
【问题讨论】:
标签:
sql
database
qsqlquery
【解决方案1】:
在 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 ;
【解决方案2】:
为 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
)