【问题标题】: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 ; 

【问题讨论】:

  • Mysql 还是 sql server ?

标签: 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 
    )
    

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      相关资源
      最近更新 更多