表内比较后的MySQL表更新

时间:2016-02-16 17:02:18

标签: php mysql wordpress

由于Wordpress / bbPress导入错误,我有重复的用户记录,即“james@foo.com”,ID 8和“imported_james@foo.com”,ID 104.

导入的帖子已分配到ID 104.我想将它们更改为8,以便我可以删除所有“imported_%”用户。

是否有查询或简单的PHP脚本允许我一次执行此操作?

SELECT  "from", ou.ID, "to", u.ID FROM wp_users u 
LEFT JOIN wp_users ou ON u.user_email=substring(ou.user_email,10) 
WHERE ou.ID IS NOT NULL

这向我展示了旧的和新的并排。但是,我需要做什么才能使用新值更新wp_posts中的post.author?

1 个答案:

答案 0 :(得分:0)

我编写了以下脚本,一次性执行此操作:

<?php
global $wpdb;

$sbs=$wpdb->query("select ou.ID old_id, u.ID new_id from wp_mmk_users u left join wp_mmk_users ou on u.user_email=substring(ou.user_email,10) where ou.ID IS NOT NULL", OBJECT);

foreach($sbs as $row) {

$wpdb->update('wp_mmk_posts', 
array( 'post_author' => $row->new_id),
array('post_author'=> $row->old_id),
array( '%d' ),array( '%d' ) 
);

echo "old: ".$row->old_id." new: ".$row->new_id."<br />";
}
?>

这就是诀窍。 :)