【问题标题】:Rows won't delete when using left join使用左连接时不会删除行
【发布时间】: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


    【解决方案1】:
    DELETE product_stock
    FROM product_stock
    INNER JOIN product  ON product_stock.product_id = product.id
    WHERE product.product_group = 2;
    

    【讨论】:

      猜你喜欢
      • 2019-05-30
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多