比较两个表上的列,如果它的列与 table2 中的列匹配,则更新 table1
Posted
技术标签:
【中文标题】比较两个表上的列,如果它的列与 table2 中的列匹配,则更新 table1【英文标题】:Compare columns on two tables, and update table1 if it's column matches a column in table2 【发布时间】:2015-10-05 18:38:30 【问题描述】:好的,所以我有两张桌子。两者都充满了电子邮件。我需要根据电子邮件地址是否出现在另一个表中,将列更新为“true”或“false”。目前我的计划是在 php 中编写一个函数来检查每一行,但它非常慢(在一个循环中循环检查一个有 250 000 行的表和一个有 130 000 行的表,这意味着 32 500 000 000 个查询)。
在 sql 中是否有更简单或更快的方法来执行此操作?我一直在四处寻找,但没有找到太多。
【问题讨论】:
【参考方案1】:要更新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
这将立即更新所有记录。然后你可以对另一张桌子做同样的事情。只需切换表名即可。
【讨论】:
谢谢,这看起来比我要使用的函数简单得多。也就是说,电子邮件列并不是唯一的。这有关系吗? 不,没关系。如果可以进行连接,您可以设置列值。 很高兴知道。我终于能够使用正确的数据对其进行测试,并且效果很好。比我原来的方法要快得多。非常感谢!以上是关于比较两个表上的列,如果它的列与 table2 中的列匹配,则更新 table1的主要内容,如果未能解决你的问题,请参考以下文章