如何更新MySQL表字段,其中2列匹配(电子邮件),但另一组列(成员ID)不同步



我已经搜索了大量的这些Stack Overflow问题,我很难对这个进行排序。我遇到的最大问题是我发现并尝试的查询超时(成员表和wp_users表中有20,000条记录)。我不是MySQL的超级高级,所以我相信一定有一种方法可以正确地做到这一点,但我还没有弄清楚。

我有一个wordpress用户表和一个非常过时的成员插件表。wp_users: ID, user_email成员:member_id, email

我试图比较ID, user_email字段到这个成员插件表,有member_id, email。两个表中的email应该匹配,但ID/member_id可能不匹配。

我的目标是执行UPDATE来更改该成员表中所有用户的member_id,以匹配wp_users表中的ID,其中两个表之间的电子邮件匹配,但大多数我发现并尝试过的事情都会超时。


这是一个例子,我试图使用一个选择查询更新,但像很多其他的事情,我尝试它只是超时后600秒。

UPDATE IGNORE members_tbl AS eMember JOIN wp_users AS u ON eMember.email = u.user_email SET eMember.member_id = u.ID WHERE eMember.member_id != u.ID

您的查询应该可以正常工作。问题很可能是你在电子邮件上没有这些表的索引。在该电子邮件上执行连接是没有办法的,但是在非索引列上执行连接是非常低效的。我会在两个表的email列上添加一个索引

最新更新