tres - mysql opuesto a la unión interna
union en sql server ejemplos (3)
Quiero contactar a mis usuarios por correo electrónico usando mi base de datos. Quiero asegurarme de no contactarme accidentalmente con el mismo usuario dos veces. Para eso, tengo una tabla que rastrea a quién fue contactado y cuándo.
Cuando hago mi consulta MYSQL quiero seleccionar correos electrónicos de la tabla de email
y asegurarme de que ninguna de esas entradas existe en la tabla contacted
.
Para expresarlo en una oración: seleccione el correo electrónico de Email_Table si no están en Contacted_Table
Tal vez hay un enfoque completamente diferente. Estoy abierto a todas las sugerencias:) Gracias :)
Prueba esto
SELECT email FROM email_table e
LEFT JOIN contacted_table c ON e.email = c.email
WHERE c.email IS NULL
Si intentas hacer una unión izquierda como esta:
SELECT users.email, contacted.email
FROM users LEFT JOIN contacted ON users.email = contacted.email
Obtendrás un resultado similar:
users.email | contacted.email
-----------------------------
aa@aa.com | aa@aa.com
bb@bb.com | bb@bb.com
cc@cc.com | cc@cc.com
dd@dd.com | NULL
ee@ee.com | NULL
Su objetivo es obtener aquellos registros que no tienen una coincidencia en la tabla contacted
, por lo que su consulta sería:
SELECT users.email
FROM users LEFT JOIN contacted ON users.email = contacted.email
WHERE contacted.email IS NULL
select email
from Email_Table t1
where not exists (select email
from Contacted_table t2
where t1.email = t2.email)
O
select email
from Email_Table t1
where email not in (select email
from Contacted_table)