【发布时间】:2015-05-02 00:02:21
【问题描述】:
为我的 wordpress 网站使用了一些 mysql。都在 1 DB 以内。
我正在尝试从wp_2_options(多站点)更新wp_options 表。
它们都有 option_name (unique_key) 和 option_value 列
如果option_name已经存在于wp_2_options表中,则需要更新wp_options表中的option_value
如果option_name 不存在,则插入来自wp_2_options 的行。
那么我如何UPDATE 和`INSERT 使用 UNIQUE KEY 值而不是 PRIMARY KEY
我该怎么做?
两者的结构相同
wp_options (
option_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
option_name varchar(64) NOT NULL DEFAULT '',
option_value longtext NOT NULL,
autoload varchar(20) NOT NULL DEFAULT 'yes',
PRIMARY KEY (option_id),
UNIQUE KEY option_name (option_name)
) ENGINE=InnoDB AUTO_INCREMENT=1402 DEFAULT CHARSET=utf8;
提前致谢
更新:
最终使用此 INSERT 然后 UPDATE。这对我有用。 现在将通过 PHP 使用它。
-- Adding completely new rows from wp_2_options into wp_options
INSERT IGNORE INTO wp_options
SELECT *
FROM wp_2_options
WHERE option_name NOT IN (SELECT option_name FROM wp_options);
-- Updating the option_name field in wp_options, if that got changed in wp_2_options
UPDATE wp_options JOIN wp_2_options
ON wp_options.option_name = wp_2_options.option_name
SET wp_options.option_value = wp_2_options.option_value;
【问题讨论】: