Mysql напротив внутреннего соединения
Я хочу связаться со своими пользователями по электронной почте, используя мою базу данных. Я хочу убедиться, что я случайно не свяжусь с одним и тем же пользователем дважды. Для этого у меня есть таблица, которая отслеживает, с кем связались и когда.
Когда я выполняю свой запрос MYSQL, я хочу выбрать электронные письма из таблицы email
и убедиться, что ни одна из этих записей не существует в таблице contacted
.
Чтобы выразить это в предложении: выберите email из Email_Table, если они не находятся в Contacted_Table
Возможно, существует совершенно другой подход. Я открыт для всех предложений:) Спасибо:)
Ответы
Ответ 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