将table_a中的值复制/更新到table_b的另一行WHERE table_a.id = table_b.id AND table_a.name = table_b.name

时间:2013-08-07 18:36:14

标签: mysql sql sql-update bulkinsert

我想将table_a中的值复制/更新到table_b的另一行WHERE table_a.id = table_b.id AND table_a.name = table_b.name

我有2个表格price_drop_apps_tempprice_drop_apps具有相同的结构

CREATE TABLE IF NOT EXISTS `price_drop_apps_temp` (
  `application_id` int(11) NOT NULL DEFAULT '0',
  `storefront_id` int(11) NOT NULL DEFAULT '0',
  `price_1` decimal(9,3) DEFAULT NULL,
  `price_2` decimal(9,3) DEFAULT NULL,
  `price_3` decimal(9,3) DEFAULT NULL,
  `price_4` decimal(9,3) DEFAULT NULL,
  `price_5` decimal(9,3) DEFAULT NULL,
  `price_6` decimal(9,3) DEFAULT NULL,
  PRIMARY KEY (`application_id`,`storefront_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci")

price_drop_apps_temp包含已更新的application_idstorefront_id

我需要将表格price_drop_app中的所有值从price_2列复制到表price_drop_apps_tempprice_1,其中application_idstorefront_id匹配对于其他一些列,两个表等等。如果price_drop_apps_temp没有匹配application_id AND storefront_id,则值应保持为NULL。

我尝试过关注但不能正常工作,我也不确定是否应该使用UPDATEINNER JOIN。我的SQL技能非常有限,所以任何帮助都会受到赞赏。

INSERT INTO price_drop_apps_temp (price_1,price_2,price_3) SELECT price_2,price_3,price_4 FROM price_drop_apps WHERE price_drop_apps_temp.application_id = price_drop_apps.application_id AND price_drop_apps_temp.storefront_id = price_drop_apps.storefront_id

1 个答案:

答案 0 :(得分:1)

我不太了解您的所有需求。但...

  

我想将table_a中的值复制/更新到table_b的另一行   WHERE table_a.id = table_b.id AND table_a.name = table_b.name

您基本上想要将一个表的price[1-3]列更新为另一个表的列UPDATE price_drop_apps_temp AS dst, price_drop_apps AS src SET dst.price1 = src.price1, dst.price2 = src.price2, dst.price3 = src.price3 WHERE dst.application_id = src.application_id AND dst.storefront_id = src.storefront_id 吗?我会尝试这样的事情:

WHERE

INSERT子句可能会根据您的具体需求进行调整(table_a.id/table_a.name?!?)。但这就是精神......


如果源表包含第二个表中不存在的某些行,则可能需要向INSERT IGNORE INTO price_drop_apps_temp SELECT * FROM price_drop_apps; 添加第二个传递:

{{1}}