簡體   English   中英

MySQL - 通過查詢另一個表中的產品ID插入表中

[英]MySQL - Insert into a table by querying product id from another table

我有兩張桌子。

這是結構

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查詢了category_id = 37的產品ID

這是查詢。

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查詢來幫我完成嗎?

嘗試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

您可以像這樣執行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查詢的每個結果插入一行。 所有其他列在所有插入的行中都是相同的。

如果您想要其他列中的其他值,則必須以某種方式指定它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM