比较两个表上的列,如果它的列与table2中的列匹配,则更新table1

时间:2015-10-05 18:38:30

标签: php mysql

好的,所以我有两张桌子。两者都充满了电子邮件。我需要将列更新为" true"或"假"取决于电子邮件地址是否出现在另一个表中。目前我的计划是在PHP中编写一个函数来检查每一行,但它非常慢(在一个循环中循环检查一个包含250 000行的表对130,000行的表,这意味着32 500 000 000个查询)。

在sql中有更简单或更快捷的方法吗?我一直在寻找,但没有找到太多。

1 个答案:

答案 0 :(得分:2)

更新table1并将列设置为TRUE(如果在另一个表中找不到该电子邮件,如果存在则为FALSE),则可以使用LEFT JOIN

update table1
left join table2 on table1.email = table2.email
set table1.bool_col = case when table2.email is null 
                           then 'true'
                           else 'false'
                      end

这将立即更新所有记录。然后你可以为另一个表做同样的事情。只需切换表名即可。