一千萬個為什麽

搜索

MySQL:如果此行的另一個值等於10 000個值的“列表”中的值,則更新一個值

我必須更新Mysql(compagnie)表中的(電子郵件)字段。我搜索一個解決方案,將每行與一個僅包含未訂閱電子郵件的列表(CSV文件)進行比較。如果電子郵件已取消訂閱,那麽我必須更新此行的(新聞稿)字段並設置為NO。也許,我應該在我的表格或另一張表格中導入我的CSV文件中包含10,000封內容的電子郵件進行比較?另外,我認為創建一個索引並鎖定表。

例如。要進行更新,但我必須手動輸入電子郵件:

CREATE INDEX idx ON compagnie (emails); 
LOCK TABLES compagnie WRITE;
UPDATE compagnie SET newsletter='NO' WHERE email='[email protected]';
UNLOCK TABLES compagnie WRITE;

最佳答案

沒有必要,只是破壞電子郵件列表並在單個查詢中進行比較

CREATE INDEX idx ON compagnie (emails); 
LOCK TABLES compagnie WRITE;
UPDATE compagnie SET newsletter='NO' WHERE email IN( ... );
UNLOCK TABLES compagnie WRITE;

... will be replaced by all emails you have in the CSV

such as IN('email1','email2','email3',...)

轉載註明原文: MySQL:如果此行的另一個值等於10 000個值的“列表”中的值,則更新一個值