2

我有两张桌子。

这是结构

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'; 

所以我有大约500种产品。

catalog_category_product我从哪里查询了产品IDcategory_id = 37

这是查询。

SELECT PRODUCT_ID 
FROM   `CATALOG_CATEGORY_PRODUCT` 
WHERE  CATEGORY_ID = 37 

使用该结果,我想将价格插入到等级价格表中。

INSERT INTO `CATALOG_PRODUCT_ENTITY_TIER_PRICE` 
            (`ENTITY_ID`, 
             `ALL_GROUPS`, 
             `CUSTOMER_GROUP_ID`, 
             `QTY`, 
             `VALUE`, 
             `WEBSITE_ID`) 
VALUES      (209, 
             1, 
             0, 
             60.0000, 
             10.0000, 
             0); 

这里catalog_product_entity_tier_price.entity_id = catalog_category_product.product_id

所以 209 是catalog_category_product查询的第一个结果。我想对所有结果做同样的事情。

有人可以帮我用mysql查询来完成吗?

4

2 回答 2

9

试试INSERT INTO ... SELECT ...这样:

INSERT INTO `catalog_product_entity_tier_price` (`entity_id`, 
                                                 `all_groups`, 
                                                 `customer_group_id`,
                                                  `qty`, 
                                                  `value`, 
                                                  `website_id`)
SELECT product_id, 1, 0, 60.0000, 10.0000, 0
FROM `catalog_category_product`
WHERE category_id =37
于 2013-09-04T13:51:32.417 回答
4

你可以做这样的INSERT INTO ... SELECT声明:

INSERT INTO `catalog_product_entity_tier_price` (`entity_id`, `all_groups`, `customer_group_id`, `qty`, `value`, `website_id`) 
SELECT product_id, 1, 0, 60.0000, 10.0000, 0 
  FROM `catalog_category_product`
  WHERE category_id =37

这将在每个查询结果中插入一行SELECT。所有其他列在所有插入的行中都是相同的。

如果您想要其他列中的其他值,则必须以某种方式指定它们。

于 2013-09-04T13:51:41.717 回答