【发布时间】:2013-08-16 12:14:44
【问题描述】:
我的 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_group 2 成员的所有 product_stock 条目。我的语法是:
DELETE PS FROM product_stock PS LEFT JOIN product P ON PS.product_id = P.id
WHERE P.product_group = 2;
问题是:MySQL 不会删除任何行。由于可能发生的性能问题,我不想使用子查询。我发现了很多左连接与删除语句相结合的例子,只是不明白这里出了什么问题......
【问题讨论】:
标签: mysql join left-join delete-row sql-delete