1

MySQL サーバー (5.5.25) に 2 つのテーブルがあります。1 つのテーブルには製品情報が保持され、もう 1 つのテーブルにはそれらの製品の在庫レベルに関する情報が保持されます。これまでのところ、外部キーを定義していません。

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 が行を削除しないことです。パフォーマンスの問題が発生する可能性があるため、サブクエリは使用したくありません。左結合と削除ステートメントを組み合わせた非常に多くの例を見つけましたが、ここで何が問題なのかわかりません....

4

1 に答える 1