0

我在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)
)

现在我正在尝试使用aswp_term_relationships中的值进行更新wp_test

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_test都不会更新为wp_term_relationships

我什至尝试直接将值wp_test插入wp_test_relationships

通过使用插入作为

insert ignore into wp_term_relationships(object_id, term_taxonomy_id)
select object_id, term_taxonomy_id from wp_test

但它只是更新term_taxonomy_id对应值为 0 的值object_idobject_id对应term_taxonomy_id值为 0的值

如何将这 2 列wp_testwp_term_relationships

4

2 回答 2

2

我认为你需要的是一个INSERT 没有 IGNORE ON DUPLICATE KEY UPDATE不是:

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);
于 2012-08-24T19:25:44.553 回答
0
UPDATE wp_term_relationships m1, wp_test m2
SET m1.term_taxonomy_id = m2.term_taxonomy_id
WHERE m1.object_id = m2.object_id;

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

于 2012-08-24T19:46:02.593 回答