mysql, удалить записи из одной таблицы 2, которые находятся в таблице 1 - PullRequest
0 голосов
/ 10 июля 2020

У меня есть две таблицы (unsubscribers und unsubscribers_real)

Я хочу удалить все записи в «unsubscribers_real», которые находятся в «unsubscribers»

пример:

таблица «отписавшиеся»

ID, электронная почта

1, namex1@domain.com

2, namex2@something.com

3, namex3@domain.com

.

.

таблица «unsubscribers_real»

ID, адрес электронной почты

1, namex1@domain.com

2, namex2@domain.com

3, namex3@domain.com

4, namex4@domain.com

5, namex5@domain.com

поэтому с помощью одной команды MySQL удаляется namex1@domain.com, namex3@domain.com из таблицы unsubscribers_real (не удаляйте ничего в table1 «отписки»)

спасибо

Ответы [ 3 ]

0 голосов
/ 10 июля 2020
DELETE FROM unsubscribers_real U
    WHERE
        U.email IN (SELECT email FROM unsubscribers )
0 голосов
/ 10 июля 2020

Я предполагаю, что вы хотите удалить строки на основе столбца email. Вам необходимо соединение в операторе DELETE:

delete ur
from unsubscribers_real ur inner join unsubscribers u
on u.email = ur.email; 

См. demo . Результаты (оставшиеся строки в unsubscribers_real):

| ID  | email             |
| --- | ----------------- |
| 2   | namex2@domain.com |
| 4   | namex4@domain.com |
| 5   | namex5@domain.com |
0 голосов
/ 10 июля 2020

Условие exists должно помочь:

DELETE FROM unsubscribers_real ur
WHERE  EXISTS (SELECT *
               FROM   unsubscirbers u
               WHERE  u.id = ur.id AND u.email = ur.email)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...