2013-10-25 89 views
0

我有兩個表。使用查詢在mysql中刪除行

這裏是

CREATE TABLE IF NOT EXISTS `CATALOG_CATEGORY_PRODUCT` 
    ( 
    `CATEGORY_ID` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Category ID', 
    `PRODUCT_ID` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Product ID', 
    `POSITION` INT(11) NOT NULL DEFAULT '0' COMMENT 'Position', 
    PRIMARY KEY (`CATEGORY_ID`, `PRODUCT_ID`), 
    KEY `IDX_CATALOG_CATEGORY_PRODUCT_PRODUCT_ID` (`PRODUCT_ID`) 
) 
ENGINE=INNODB 
DEFAULT CHARSET=UTF8 
COMMENT='Catalog Product To Category Linkage Table'; 

CREATE TABLE IF NOT EXISTS `CATALOG_PRODUCT_ENTITY_TIER_PRICE` 
    ( 
    `VALUE_ID`   INT(11) NOT NULL AUTO_INCREMENT COMMENT 'Value ID', 
    `ENTITY_ID`   INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 
    'Entity ID', 
    `ALL_GROUPS`  SMALLINT(5) UNSIGNED NOT NULL DEFAULT '1' COMMENT 
    'Is Applicable To All Customer Groups', 
    `CUSTOMER_GROUP_ID` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 
    'Customer Group ID', 
    `QTY`    DECIMAL(12, 4) NOT NULL DEFAULT '1.0000' COMMENT 'QTY', 
    `VALUE`    DECIMAL(12, 4) NOT NULL DEFAULT '0.0000' COMMENT 
    'Value', 
    `WEBSITE_ID`  SMALLINT(5) UNSIGNED NOT NULL COMMENT 'Website ID', 
    PRIMARY KEY (`VALUE_ID`) 
) 
ENGINE=INNODB 
DEFAULT CHARSET=UTF8 
COMMENT='Catalog Product Tier Price Attribute Backend Table'; 

我用這下面的查詢

SELECT * FROM `catalog_product_entity_tier_price` LEFT OUTER JOIN catalog_category_product ON catalog_product_entity_tier_price.entity_id = catalog_category_product.product_id WHERE catalog_category_product.category_id = 57 AND catalog_product_entity_tier_price.qty = 500.0000 

它返回97行結構。我想刪除這97行。

所以我用這個查詢。

DELETE FROM `catalog_product_entity_tier_price` LEFT OUTER JOIN catalog_category_product WHERE catalog_product_entity_tier_price.entity_id = catalog_category_product.product_id AND catalog_category_product.category_id = 57 AND catalog_product_entity_tier_price.qty = 500.0000 

但我得到這個錯誤。

#1064 - 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 'LEFT OUTER JOIN catalog_category_product WHERE catalog_product_entity_tier_price' at line 1 

有人能告訴我正確的語法嗎?

謝謝

回答

1

試試這個::

DELETE cpet 
FROM `catalog_product_entity_tier_price` cpet 
LEFT OUTER JOIN catalog_category_product ccp 
ON 
cpet.entity_id = ccp.product_id 
AND ccp.category_id = 57 
WHERE cpet.qty = 500.0000 
+0

謝謝您的回答。我只想從'catalog_product_entity_tier_price'表中刪除行。你確定它只從該表中刪除行嗎? – Giri

+0

@Giri:是的,所以我在'delete' –

+0

之後提到過我試過你的代碼。這是我得到的錯誤。 '#1064 - 你的SQL語法有錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在'WHERE cpet.entity_id = ccp.product_id AND ccp.category_id = 57 AND cpet.qt'在第4行使用正確的語法' – Giri