Этот вопрос не очень понятен, и я могу только предположить, что значение 100 является статическим значением, и что у вас фактически нет внешних ключей, как подразумевают названия столбцов. Кроме того, вы действительно должны избегать зарезервированных слов, таких как «Группа» для имен объектов. Это делает вещи более сложными и запутанными.
Простая версия вашей вставки может выглядеть следующим образом.
insert GroupPermission
(
FkGroupId
, FkPermissionId
)
select g.GroupId
, 100
from [Group] g
where g.GroupLevel = 0
- EDIT -
Так как вы хотите вставить только те строки, которые еще не вставленысуществует, вы можете использовать НЕ СУЩЕСТВУЕТ, как это.
select g.GroupId
, 100
from [Group] g
where g.GroupLevel = 0
AND NOT EXISTS
(
select *
from GroupPermission gp
where gp.FkGroupId = g.GroupId
and g.FkPermissionId = 100
)
Или вы можете использовать левое соединение, как это.
select g.GroupId
, 100
from [Group] g
left join GroupPermission gp on gp.FkGroupId = g.GroupId
and gp.FkPermissionId = 100
where g.GroupLevel = 0
and gp.FkGroupId is null