Mysql 将数据从表1的第1列复制到表2的第2列,并忽略重复项

Mysql 将数据从表1的第1列复制到表2的第2列,并忽略重复项,mysql,wordpress,Mysql,Wordpress,我在wordpress中有一个表1 wp_term_relationships ( object_id bigint(20), term_taxonomy_id bigint(20), term_order int(11) ) 表2如下: wp_test ( object_id bigint(20), term_taxonomy_id bigint(20) ) 现在我正试图用wp\u test中的值更新wp\u term\u关系 update ignore

我在wordpress中有一个表1

wp_term_relationships (
   object_id bigint(20),
   term_taxonomy_id bigint(20),
   term_order int(11)
)
表2如下:

 wp_test (
    object_id bigint(20),
    term_taxonomy_id bigint(20)
)
现在我正试图用
wp\u test
中的值更新
wp\u term\u关系

update ignore wp_term_relationships m1 
inner join wp_test m2
on (m1.term_taxonomy_id = m2.term_taxonomy_id)
set m1.object_id = m2.object_id
但是,
wp\u test
的所有值不会更新为
wp\u term\u关系

我甚至尝试直接将
wp\u test
中的值插入
wp\u test\u关系中

通过使用insert作为

insert ignore into wp_term_relationships(object_id, term_taxonomy_id)
select object_id, term_taxonomy_id from wp_test
但它只是用相应的
对象id
值作为0或0更新
术语分类法id
object\u id
值,对应的
term\u taxonomy\u id
值为0


如何将这两列从
wp\u test
转移到
wp\u term\u关系中
我想您需要的是
插入
而不忽略
在重复键更新时使用

INSERT INTO 
  wp_term_relationships (object_id, term_taxonomy_id)
SELECT 
  object_id, 
  term_taxonomy_id 
  FROM wp_test
ON DUPLICATE KEY UPDATE 
  wp_term_relationships.term_taxonomy_id = VALUES(term_taxonomy_id)
请注意,这假设您对wp_term_relationships.object_id有唯一的约束

针对不同情况进行编辑: 如果您的意思是构成“重复”的是两列的不同组合,那么您需要在MySQL中的两列上添加一个唯一的约束,然后使用
INSERT IGNORE
查询:

ALTER TABLE wp_term_relationships ADD UNIQUE (object_id, term_taxonomy_id);

我假设表由一个名为“object_id”的列链接。

为了简化,我正在寻找一个查询,该查询将使我能够将表1中column1、column2的内容传输到表2中相应的列中,当然需要重复处理。我假设放上“更新忽略”或“插入忽略”应该考虑到这一点?说“重复处理”是含糊不清的;复制品应该怎么办?是否应该存在重复项,或者新值应该取代旧值,或者新值应该被忽略?那么,我必须问一下您的请求的模糊性。。。您的要求中的“副本”由什么构成?也许在任一列中都可以有重复的行,但没有两个不同值的重复行?i、 没有普通双吗?是的,你知道了。两列中都可以有重复的值,但没有会产生重复键错误的重复行。如果您看到前面的答案注释,则这两列有重复项,但行必须是唯一的。
UPDATE wp_term_relationships m1, wp_test m2
SET m1.term_taxonomy_id = m2.term_taxonomy_id
WHERE m1.object_id = m2.object_id;