【问题标题】:Sql Query with NOT LIKE IN WHERE CLAUSE带有 NOT LIKE IN WHERE CLAUSE 的 Sql 查询
【发布时间】:2022-01-21 05:04:45
【问题描述】:

我有两个表 emailsblockedSender 我正在尝试从电子邮件查询中删除被阻止的发件人。例如

电子邮件表:

user_id from_address
1 name-1 <email-1@address.com>
2 name-2 <email-2@address.com>

blockedSender 表:

blocked_address
email-1@address.com

在这里,我想从电子邮件表中返回 from_address 不与被阻止地址中的条目进行 LIKE 匹配的所有元素。类似于

select email_id, from_address 
from emails e 
where from_address not like in (select '%' + blocked_address + '%' 
                                from blockSenders)

由于语法不正确,它不起作用。有没有办法做到这一点?

【问题讨论】:

    标签: sql sql-server sql-server-2008-r2


    【解决方案1】:

    你可以用不存在

    来表达
    select e.email_id, e.from_address
    from emails e 
    where not exists (
        select * from blockedSenders b 
        where e.from_address like '%' + b.blocked_address + '%'
    )
    

    【讨论】:

      【解决方案2】:

      可以改写为JOIN:

      select e.email_id, e.from_address 
      from emails e
      left join blockSenders b
        ON e.from_address LIKE '%' + b.blocked_address + '%' 
      where b.blocked_address IS NULL;
      

      db<>fiddle demo

      【讨论】:

        猜你喜欢
        • 2014-03-03
        • 1970-01-01
        • 2021-04-19
        • 2016-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多