Mysql SQL如何使用内部联接从表中删除数据

Mysql SQL如何使用内部联接从表中删除数据,mysql,phpmyadmin,Mysql,Phpmyadmin,我试图删除表oc_products中没有特定类别ID的所有记录。我创建了一个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_prod

我试图删除表oc_products中没有特定类别ID的所有记录。我创建了一个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

它显示了错误的意外关键字,靠近内部联接。

在第一行中向p添加。*

尝试:


编写一个子查询以获取所有记录,然后使用where子句。从oc_product中删除oc_product,我在子查询@sreenivas中尝试了oc_product,但错误表“oc_product”被指定了两次,既作为“删除”的目标,又作为单独的数据源出现。我理解这个问题,但我需要改变什么?它工作得很好。您能否解释一下。*的确切含义,以及p和pc代表什么?非常感谢您的帮助。p和pc是别名,因此您不必每次都使用完整的表名。p、 *只是说从p中删除行,而不是从pc中删除行。
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