es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar una subconsulta con una cláusula NOT EXISTS para lograr esto. La consulta SQL se vería así:

    SELECT user_id, from_address
    FROM emails e
    WHERE NOT EXISTS (
      SELECT 1
      FROM blockedSender b
      WHERE e.from_address LIKE '%' + b.blocked_address + '%'
    )
    

    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.

Comments are closed.