2016-10-02 2 views
0

Ich habe eine Tabelle von emails und eine Tabelle von domains. Wie kann ich UPDATE die E-Mail-Spalte, um die domain_id, die eine foreign_key auf die Tabelle Domänen ist.SQL-Abfrage zum Auffinden der Domain einer E-Mail-Adresse

Domains

domain_id domain 
1   google.co.uk 
2   google.com 
3   domain.com 
4   domain.gov.au 

E-Mails

email_id  email       domain_id 
1   [email protected] 
2   [email protected] 
3   [email protected] 
4   [email protected] 

Der schwierige Teil ist, dass E-Mails können auf dem Top-Level-Domain oder Subdomain basieren.

+0

* "AKTUALISIEREN Sie die E-Mail-Spalte, um die Domänen-ID zu setzen" *: Das ist verwirrend. Sie möchten beide Spalten aktualisieren? – trincot

Antwort

1

Dies ist eine Möglichkeit, es zu tun LIKE Betreiber

select E.email_id, E.email, D.domain_id 
from Domains D 
Inner Join Emails E 
     ON E.email like concat('%',D.domain,'%') 

Above Abfrage kann

2

Hier wird ein Verfahren zur Update Anweisung umgewandelt werden:

update emails e join 
     domains d 
     on e.email like concat('%', d.domain) 
    set e.domain_id = d.id; 

Hinweis: Dies ist nicht effizient, weil es keinen Index verwendet. Aber für eine einmalige Anstrengung sollte es in Ordnung sein.

Verwandte Themen