好的,所以我有两张桌子。两者都充满了电子邮件。我需要将列更新为" true"或"假"取决于电子邮件地址是否出现在另一个表中。目前我的计划是在PHP中编写一个函数来检查每一行,但它非常慢(在一个循环中循环检查一个包含250 000行的表对130,000行的表,这意味着32 500 000 000个查询)。
在sql中有更简单或更快捷的方法吗?我一直在寻找,但没有找到太多。
答案 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
这将立即更新所有记录。然后你可以为另一个表做同样的事情。只需切换表名即可。