0

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

我有 2 个表price_drop_apps_temp并且price_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_idANDstorefront_id都匹配,其他一些列以此类推。如果price_drop_apps_temp没有匹配且值应保持为 NULL application_idstorefront_id

我尝试了以下操作,但它不起作用,我也不确定是否应该使用UPDATEor INNER 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
4

1 回答 1

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子句可能必须根据您的具体需求进行调整(table_a.id/table_a.name ?!?)。但这就是精神...


如果源表包含第二个表中不存在的某些行,您可能必须向INSERT它们添加第二遍:

INSERT IGNORE INTO price_drop_apps_temp SELECT * FROM price_drop_apps;
于 2013-08-07T19:18:04.203 回答