带有 NOT LIKE IN WHERE CLAUSE 的 Sql 查询
Posted
技术标签:
【中文标题】带有 NOT LIKE IN WHERE CLAUSE 的 Sql 查询【英文标题】:Sql Query with NOT LIKE IN WHERE CLAUSE 【发布时间】:2022-01-21 05:04:45 【问题描述】:我有两个表 emails 和 blockedSender 我正在尝试从电子邮件查询中删除被阻止的发件人。例如
电子邮件表:
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)
由于语法不正确,它不起作用。有没有办法做到这一点?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于带有 NOT LIKE IN WHERE CLAUSE 的 Sql 查询的主要内容,如果未能解决你的问题,请参考以下文章
如何翻转正面带有标签而背面带有另一个标签的视图 - 参见图片
CakePHP 如何处理带有/不带有 'id' 字段的 HABTM 表?
带有 RecyclerView 的 DialogFragment 比带有 Recyclerview 的 Fragment 慢