簡體   English   中英

如果另一個表中存在子控件,則進行MYSQL更新

[英]MYSQL Update IF a subtring exists in another table Inner Join

我正在處理的是我們數據庫的電子郵件清理腳本。 通過這樣做,我們確定了無效,損壞或不再存在的域的列表。 我們通過標識域名(即@符號后的所有內容)來實現此目的。

update url_links
set link_bad=1,
    emailCarrier='bad-domain.com'
where contact_email like '%@bad-domain.com';

標識提供者並設置字段。 問題是我們有數百個無效的域(以上僅是示例)

我想做的是“內部連接”到另一個表,稱為“ emailCarriers”。 我可以將其寫為PHP的循環,但我想在這里問社區是否有人在MySQL中有巧妙的方法來做到這一點。

emailCarriers表包含所有錯誤的域運營商,因此查詢將引用emailCarriers表,並嘗試在域名部分的子字符串上找到匹配項(在@符號之后),如果匹配,則將執行更新並填充在“ bad-domain.com”中,並帶有emailCarriers表中的相應域。

謝謝!

update url_links ul
join emailCarriers ec on ul.contact_email like concat('%@', ec.domain)
set ul.link_bad=1,
    ul.emailCarrier=ec.domain;

您可以嘗試這樣的事情:

UPDATE url_links u JOIN emailCarrier e 
ON u.SUBSTRING_INDEX(url_links, '@', 1) = b.provider
SET link_bad = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM