我有兩個表電子郵件和blockedSender我試圖從電子郵件查詢中洗掉被阻止的發件人。例如
電子郵件表:
| 用戶身份 | 發件人地址 |
|---|---|
| 1 | name-1 <[email protected]> |
| 2 | name-2 <[email protected]> |
被阻止的發件人表:
| 被阻止的地址 |
|---|
| [email protected] |
在這里,我想從電子郵件表中回傳所有元素,其中 from_address 沒有與被阻止地址中的條目進行 LIKE 匹配。類似的東西
select email_id, from_address
from emails e
where from_address not like in (select '%' blocked_address '%'
from blockSenders)
由于不正確的語法而不起作用。有沒有辦法做到這一點?
uj5u.com熱心網友回復:
您可以使用不存在來表達這一點
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 '%'
)
uj5u.com熱心網友回復:
可以改寫為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<>小提琴演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385355.html
標籤:sql sql-server sql-server-2008-r2
上一篇:洗掉不需要的字符并獲取新列
