2015-10-05 50 views
1

好的,所以我有兩個表。兩者都充滿了電子郵件。根據電子郵件地址是否出現在另一個表中,我需要將列更新爲「true」或「false」。目前,我的計劃是在PHP中編寫一個函數來檢查每一行,但它非常慢(循環內循環檢查一行有250 000行的表與130 000行的表,這意味着32 500 000 000個查詢)。比較兩個表上的列,並更新table1,如果它的列匹配表2中的列

是否有更簡單或更快捷的方式來執行此操作?我一直在尋找,但沒有找到太多。

回答

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 

此預訂購一次更新所有記錄。然後你可以爲另一個表做同樣的事情。只需切換表名。

+0

謝謝,看起來比我要使用的功能簡單得多。也就是說,電子郵件欄不是唯一的。這是否重要? –

+0

不,這沒關係。如果可以創建連接,則可以設置列值。 –

+0

很高興知道。我終於能夠用正確的數據進行測試,並且效果很好。比我原來的方法要快得多。非常感激! –

相關問題