MySQL SELECT Подстрока несуществующих строк из другой ТАБЛИЦЫ - PullRequest
0 голосов
/ 27 мая 2020

Я уверен, что на это уже был дан ответ, но я только изучаю mysql и поэтому не знаю, как правильно искать решение. У меня есть две таблицы:

Table1                  Table2
id email                id  domain
-- ----                 --  ----
1  name@domain1.com     1   domain1.com
2  name@domain2.com     2   domain4.com
3  name@domain3.com
4  name@domain4.com

Используя электронные письма в Table1, я хотел бы вернуть домены, которые не существуют в table2, а затем записать их в Table2, поэтому у меня есть полный уникальный список домены в таблице 2.

Table1                  Table2
id email                id  domain
-- ----                 --  ----
1  name@domain1.com     1   domain1.com
2  name@domain2.com     2   domain4.com
3  name@domain3.com     3   domain2.com
4  name@domain4.com     4   domain3.com

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Вы можете добиться этого, используя WHERE NOT IN с подзапросом

INSERT INTO Table2 ( domain )
SELECT DISTINCT SUBSTRING_INDEX(email,'@',-1)
FROM Table1  
WHERE SUBSTRING_INDEX(email,'@',-1) NOT IN (SELECT domain FROM Table2)
1 голос
/ 27 мая 2020

сделайте доменные имена уникальным ключом в таблице 2, затем INSERT IGNORE выберите отдельную подстроку () и c из таблицы 1

Alter table_2 
 add unique key k1(domain);

insert ignore into table_2(domain)
select distinct substring_index(email,'@',-1)
from table_1;

Где IGNORE будет ошибаться, игнорируя такие ошибки, как дубликаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...