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