MYSQL:我想用另一个表中的值更新表中的所有行,其中第一个表中的值等于第二个表中的值

MYSQL:我想用另一个表中的值更新表中的所有行,其中第一个表中的值等于第二个表中的值,mysql,sql,wordpress,Mysql,Sql,Wordpress,我试图更新一个损坏的WordPress术语关系(在wp_terms和wp_term_关系表中) 在Wordpress中输入的一些标签的“term_id”编号而不是“name”,因此,不是创建与原始正确标签的关系,而是创建一个新标签,并将此编号作为其名称 (例如,如果标签“toy”有一个术语\u id->2010,那么新标签将被命名为“2010”,并带有一个新的随机术语\u id,比如30453) 在上表中,两个对象(3456和4362)的正确关系是与“toy”(与term_id 2010)的关

我试图更新一个损坏的WordPress术语关系(在wp_terms和wp_term_关系表中)

在Wordpress中输入的一些标签的“term_id”编号而不是“name”,因此,不是创建与原始正确标签的关系,而是创建一个新标签,并将此编号作为其名称

(例如,如果标签“toy”有一个术语\u id->2010,那么新标签将被命名为“2010”,并带有一个新的随机术语\u id,比如30453)

在上表中,两个对象(3456和4362)的正确关系是与“toy”(与term_id 2010)的关系,但错误创建了一个新的term(“2010”)与另一个term_id(30453)。 我们希望这两个对象ID与2010相关,如下所示:

尝试修复关系并将对象id与正确的术语id关联,我尝试了以下SQL查询:

UPDATE wp\u term\u relationships JOIN wp\u term SET wp\u term\u relationships.term\u taxonomy\u id=wp\u terms.name,其中wp\u terms.name REGEXP'^[0-9]*$'和wp\u term\u relationships.term\u taxonomy\u id=CAST(wp\u terms.name为整数)

(我将wp_terms.name强制转换为整数以避免类型不匹配,尽管我不知道是否有必要。)

此查询运行时没有错误,但返回“0行受影响”,并且不更新任何数据


有人能解释一下原因并提出一个有效的解决方案吗?

在正确的列上使用正确的连接和ON子句,如下所示:

UPDATE wppp_term_relationships tr
JOIN wppp_terms t ON tr.term_taxonomy_id =  t.term_id
SET tr.term_taxonomy_id = t.name 
WHERE t.name REGEXP '^[0-9]*$';

请参阅。

发布示例数据和预期结果,以澄清您想要的内容。@forpas我添加了一些示例数据以澄清问题!我正在尝试此操作,但mysql返回“#1062-键'PRIMARY'的重复条目'5574-9',但没有具有此值的条目…@LucasCave查询仅更新列
term\u taxonomy\u id
。它是表
wppp\u term\u关系的主键吗?不,它不是。term_relationships表上的主键是Object_id。没有“5574-9”这样的值…@LucasCave然后检查是否有可能由于更新而运行的触发器。数据库上的Show triggers不会返回任何结果。