0
這可能被標記爲重複,但我無法在我的搜索中找到此示例。MYSQL刪除行如果重複的鍵存在與指定值相同的表
我有一個產品到類別的表,允許重複鍵,因此允許按ID分類放置多個產品。我有一種情況,幾千種產品被錯誤地放在一個類別中。如果產品分配了「動作圖」和「漫畫」,則「漫畫」分配是錯誤的。
我正在嘗試編寫一個單一的MYSQL查詢,如果檢測到具有重複鍵和指定的'Action Figures'值的行,將刪除行。另一種說法是:如果一個產品被分配到兩個類別,那麼我想刪除將其分配給錯誤類別的行。
我似乎無法找出一個刪除語句,可以按照我想要的方式通過ID在同一張表中進行搜索。
這裏就是我這麼遠(編輯 - 由於下面的答案):
DELETE FROM oc_product_to_category c1
WHERE c1.category_id = '25'
AND EXISTS(
SELECT * FROM oc_product_to_category c2
WHERE c1.product_id = c2.product_id AND c2.category_id = '24')
不幸的是,這是一個產區語法錯誤。
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near
'c1
WHERE c1.category_id = '25'
AND EXISTS (
SELECT * FROM oc_product_to_catego' at line 1
當我嘗試語法
DELETE c1 FROM oc_product_to_category c1 ...
我得到一個錯誤:
You can't specify target table 'c1' for update in FROM clause
我不知道你可以使用2個不同的別名來引用同一個表...無知再次罷工。是的,這些數字是任意的,但我試圖修復數據。實際值是25和33,但不用擔心。 –
這是一個非常有用的比較表內值的工具。我已經更新了26到33.另外,如果解決了您的問題,請將答案標記爲已接受。 –
我編輯了我的問題,得到了一個語法錯誤,並且沒有足夠的SQL解析經驗來解密它。另外,感謝您編輯您的答案。我的第一條評論的最後一句話是針對另一個已被刪除的評論。 –