Я думаю, что вы хотите:
insert into holidays (companyId, name)
select c.companyId, h.name
from companies c cross join
(select 1 as ord, 'holiday1' as name union all
select 2 as ord, 'holiday2'
) h
order by c.companyId, h.ord;
Предполагается, что holidays.id
- столбец с автоинкрементом. Если нет, вы должны сделать это один. Если нет, то вы можете использовать row_number()
:
insert into holidays (id, companyId, name)
select row_number() over (order by c.companyId, h.ord),
c.companyId, h.name
from companies c cross join
(select 1 as ord, 'holiday1' as name union all
select 2 as ord, 'holiday2'
) h
order by c.companyId, h.ord;
Или параметр:
insert into holidays (id, companyId, name)
select (@rn := @rn + 1) as id,
c.companyId, h.name
from companies c cross join
(select 1 as ord, 'holiday1' as name union all
select 2 as ord, 'holiday2'
) h cross join
(select @rn := 0) params
order by c.companyId, h.ord;