MySQL: обновить значение, если другое значение для этой строки равно значению из «списка» из 10 000 значений - PullRequest
0 голосов
/ 06 декабря 2010

Я должен обновить поля (emails) в таблице Mysql (compagnie).Я ищу решение, чтобы сравнить каждую строку со списком (файл CSV), который содержит только неподписанные электронные письма.Если электронные письма отписаны, я должен обновить (новостную рассылку) поля для этой строки и установить для НЕТ.Возможно, что я должен импортировать свой CSV-файл с 10 000 именных электронных писем в столбце моей таблицы или в другой таблице, чтобы провести сравнение?Кроме того, я думаю, создать индекс и заблокировать таблицу.

Например, чтобы сделать обновление, но я должен ввести адрес электронной почты вручную:

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

Ответы [ 2 ]

0 голосов
/ 06 декабря 2010

Самый простой способ - иметь две колонки, отписаться и подписаться.Использование объединения для обновления таблицы подписки.

ОБНОВЛЕНИЕ подписки SET newsletter = "Нет" ОТ подписки Присоединиться отменить подписку ВКЛ (subscribe.email = unsubscribe.email);

0 голосов
/ 06 декабря 2010

Нет необходимости, просто сверните список писем и сделайте сравнение в одном запросе, как

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

... будет заменено всеми электронными письмами, которые у вас есть в CSV

например IN('email1','email2','email3',...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...