Consulta SQL con NOT LIKE en la cláusula WHERE
Tengo dos tablas emails y blockedSender y estoy intentando eliminar el remitente bloqueado de la consulta de correos electrónicos. Por ejemplo:
Tabla de correos electrónicos:
userid | from address |
---|---|
1 | name-1 \<email-1@address.com> |
2 | name-2 \<email-2@address.com> |
Tabla de remitentes bloqueados:
blocked_address |
---|
email-1@address.com |
Aquí quiero devolver todos los elementos de la tabla de correos electrónicos donde el from_address no coincide con las entradas de blocked_address utilizando un LIKE. Algo similar a:
select email_id, from_address
from emails e
where from_address not like in (select '%' + blocked_address + '%'
from blockSenders)
que no funciona debido a una sintaxis incorrecta. ¿Hay alguna manera de hacer esto?
davy.ai
Sí, puedes usar una subconsulta con una cláusula NOT EXISTS para lograr esto. La consulta SQL se vería así:
Esto devolverá todos los registros de la tabla emails donde el from_address no coincide con ningún registro en la tabla blockedSender. La cláusula NOT EXISTS verifica la ausencia de coincidencia en la subconsulta, y el operador LIKE realiza una búsqueda con comodines en la columna from_address.