使用左连接时不会删除行

时间:2013-08-16 12:14:45

标签: mysql join left-join delete-row sql-delete

我的MySQL服务器上有两个表(5.5.25)。一个表格保存产品信息,另一个表格保存这些产品的库存水平信息。到目前为止我还没有定义任何外键:

mysql> DESCRIBE product;
+---------------------+--------------+------+-----+---------+----------------+
| Field               | Type         | Null | Key | Default | Extra          |
+---------------------+--------------+------+-----+---------+----------------+
| id                  | int(11)      | NO   | PRI | NULL    | auto_increment |
| product_no          | varchar(45)  | YES  |     | NULL    |                |
| product_group       | int(11)      | NO   |     | NULL    |                |
+---------------------+--------------+------+-----+---------+----------------+

mysql> DESCRIBE product_stock;
+--------------+---------+------+-----+---------+----------------+
| Field        | Type    | Null | Key | Default | Extra          |
+--------------+---------+------+-----+---------+----------------+
| id           | int(11) | NO   | PRI | NULL    | auto_increment |
| product_id   | int(11) | NO   |     | NULL    |                |
| amnt_stocked | int(11) | NO   |     | NULL    |                |
+--------------+---------+------+-----+---------+----------------+

现在我的工作是删除任何product_stock条目,这些条目是product_group 2的成员。我的语法是:

DELETE PS FROM product_stock PS LEFT JOIN product P ON PS.product_id = P.id 
WHERE P.product_group = 2;

问题是:MySQL不会删除任何行。由于可能出现的性能问题,我不想使用子查询。我发现很多左连接的例子与删除语句相结合,只是不知道这里出了什么问题....

2 个答案:

答案 0 :(得分:2)

这是你遇到的同样的问题和答案。转到此链接,了解如何完成link for the answer

答案 1 :(得分:0)

DELETE product_stock
FROM product_stock
INNER JOIN product  ON product_stock.product_id = product.id
WHERE product.product_group = 2;