Не уверен, что я точно понимаю вопрос. Если таблица классов пуста и вы просто хотите заполнить ее из таблицы имен; попробуйте это:
insert into class (mainid)
select id from name
Но я не уверен, что полностью понимаю ваш вопрос. Я думаю, что мне нужно немного больше информации. Например, почему вам нужен D, чтобы быть первым? Таблица классов пуста, и вам просто нужно загрузить ее с данными из имени? Или в таблице классов уже есть данные?
Если таблица классов пуста, вы можете просто запустить sql, который я опубликовал выше, чтобы загрузить ее из таблицы имен. Нет необходимости «сопоставлять» две таблицы вместе. Однако, если в таблице классов уже есть данные и вы не хотите ничего дублировать, вам нужно выполнить что-то вроде следующего:
insert into class (mainid)
select id from name N
where N.id not in
(select distinct (C.mainid) from class C)
или лучший способ сделать это:
insert into class (mainid)
select id from name N
where not exists (select 1 from class C where N.id = C.mainid)