Запрос, который вы хотели написать - я только что удалил id
из списка столбцов для insert
: он будет автоматически увеличиваться автоматически при каждой вставке:
insert into schema1.domain (domain_name)
select distinct domain_name
from logs l
where not exists (select 1 from schema1.domain d where d.domain_name = l.domain_name);
Вы также можете использовать insert ... on duplicate key
синтаксис. Это требует определения уникального ограничения для столбца domain
:
create table schema1.domain (
id int auto_increment primary key not null,
domain_name varchar(10) unique
);
. Затем вы можете выполнить:
insert into schema1.domain (domain_name)
select distinct domain_name from logs l
on duplicate key update domain = values(domain)
Когда встречается domain
, который уже существует в таблице, запрос переходит к предложению on duplicate key
, где выполняется фиктивная операция.