Подтвердить что ты не робот

Mysql напротив внутреннего соединения

Я хочу связаться со своими пользователями по электронной почте, используя мою базу данных. Я хочу убедиться, что я случайно не свяжусь с одним и тем же пользователем дважды. Для этого у меня есть таблица, которая отслеживает, с кем связались и когда.

Когда я выполняю свой запрос MYSQL, я хочу выбрать электронные письма из таблицы email и убедиться, что ни одна из этих записей не существует в таблице contacted.

Чтобы выразить это в предложении: выберите email из Email_Table, если они не находятся в Contacted_Table

Возможно, существует совершенно другой подход. Я открыт для всех предложений:) Спасибо:)

4b9b3361

Ответ 1

select email 
from Email_Table t1 
where not exists (select email 
                  from Contacted_table t2 
                  where t1.email = t2.email)

ИЛИ

select email 
from Email_Table t1 
where email not in (select email 
                    from Contacted_table)

Ответ 2

Попробуйте это

SELECT email FROM email_table e 
LEFT JOIN contacted_table c ON e.email = c.email
WHERE c.email IS NULL

Ответ 3

Если вы попытаетесь сделать левое соединение следующим образом:

SELECT users.email, contacted.email
FROM users LEFT JOIN contacted ON users.email = contacted.email

Вы получите аналогичный результат:

users.email | contacted.email
-----------------------------
[email protected]   | [email protected]
[email protected]   | [email protected]
[email protected]   | [email protected]
[email protected]   | NULL
[email protected]   | NULL

Ваша цель - получить тех, кто не имеет соответствия в связанной таблице, поэтому ваш запрос будет выглядеть следующим образом:

SELECT users.email
FROM users LEFT JOIN contacted ON users.email = contacted.email
WHERE contacted.email IS NULL