【问题标题】:SQL How to Delete Data from Table Using INNER JOINSQL 如何使用 INNER JOIN 从表中删除数据
【发布时间】:2018-05-25 12:42:13
【问题描述】:

我正在尝试删除表“oc_products”中没有特定类别 ID 的所有记录。我创建了一个使用 INNER JOIN 列出这些产品的 SELECT 查询,因为这些类别位于单独的表中。

我不知道如何使用DELETE功能删除显示的记录。

这是我的代码的样子:

DELETE oc_product
FROM oc_product
INNER JOIN oc_product_to_category ON oc_product.product_id = oc_product_to_category.product_id
WHERE oc_product_to_category.category_id = 343

它显示错误“Unexpected keyword, (near INNER JOIN)”。

【问题讨论】:

  • 编写子查询获取所有记录,然后使用where子句。 DELETE oc_product FROM oc_product where oc_product in (sub query )
  • @sreenivas 我试过了,但出现错误 "Table 'oc_product' 被指定了两次,既作为 'DELETE' 的目标,又作为数据的单独源" .我了解问题,但我需要更改什么?

标签: mysql phpmyadmin


【解决方案1】:

在第一行将 .* 添加到 p。

试试:

DELETE p.* FROM oc_product p
INNER JOIN oc_product_to_category pc ON p.product_id = 
    pc.product_id
WHERE pc.category_id = 343

【讨论】:

  • 完美运行。您能否解释一下“.*”的确切作用,以及“p”和“pc”代表什么?非常感谢您的帮助。
  • p 和 pc 是别名,因此您不必每次都使用完整的表名。 p.* 只是说从 p 而不是从 pc 中删除行。
猜你喜欢
  • 1970-01-01
  • 2010-10-21
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 2016-08-06
相关资源
最近更新 更多