2016-10-02 1 views
0

У меня есть таблица emails и таблица domains. Как я могу отправить UPDATE столбец электронной почты, чтобы установить domain_id, который является foreign_key для доменов таблиц.SQL-запрос для поиска домена адреса электронной почты

Домены

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

Письма

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

Хитрость в том, что электронная почта может быть основано на домене верхнего уровня или субдомен.

+0

* «ОБНОВЛЯЙТЕ столбец электронной почты для установки domain_id» *: это сбивает с толку. Вы хотите обновить оба столбца? – trincot

ответ

1

Вот один из способов сделать это с помощью LIKE оператора

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

Выше запроса может быть преобразован в Update заявление

2

Вот один метод:

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

Примечание: Это неэффективен, потому что он не будет использовать индекс. Но для одноразовых усилий это должно быть хорошо.

Смежные вопросы