Mysql 将数据从表1的第1列复制到表2的第2列,并忽略重复项
我在wordpress中有一个表1Mysql 将数据从表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
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;