0

productsshops、およびの 3 つのテーブルがありsexます。テーブルに同等のものが存在しないようなものDELETEを持つ製品テーブルの行を希望します。product_idproduct_idsex

さらに、テーブル内のこれらの行は、値が「www.shop.com」である行のテーブル内のと等しいproducts必要があります。shop_idshop_idshopsshops.shop

これまでのところ私は持っています

DELETE FROM products USING shops WHERE
products.shop_id=shops.shop_id AND
shops.shop='www.shop.com' AND NOT EXISTS
(SELECT sex.product_id FROM sex WHERE
sex.product_id=products.product_id)

productsしかし、私が行ったようにサブクエリで参照することは受け入れられないようです。(エラーが表示されますUnknown table 'products' in MULTI DELETE。) 間違いを修正するにはどうすればよいですか?

4

1 に答える 1

2

ステートメントJOINで s を使用できます。DELETE

DELETE    a 
FROM      products a
JOIN      shops b ON a.shop_id = b.shop_id AND b.shop = 'www.shop.com'
LEFT JOIN sex c ON a.product_id = c.product_id
WHERE     c.product_id IS NULL

これはDELETEshopsテーブル内にshop= www.shop.com の対応する行がある製品のみを対象としますが、その製品にもテーブル内に対応する行がないsex場合に限ります。

于 2012-08-17T19:47:07.810 に答える