Вы можете сгенерировать все строки, используя cross join
, при условии, что у вас есть таблицы для сайтов и пользователей:
INSERT INTO SiteSecurity (SiteID, LoginName)
SELECT s.SiteId, u.UserName
FROM Sites s CROSS JOIN
users u;
Если вы не можете их сгенерировать на лету.Конструкторы таблиц различаются в зависимости от базы данных, но это дает подход:
INSERT INTO SiteSecurity (SiteID, LoginName)
SELECT s.SiteId, u.UserName
FROM (VALUES (1), (2), (3), . . . ) s(SiteID) CROSS JOIN
(VALUES ('user1'), ('user2'), . . . ) u(UserName);
РЕДАКТИРОВАТЬ:
Если у вас есть существующие данные, вы можете отфильтровать дубликаты перед вставкой:
INSERT INTO SiteSecurity (SiteID, LoginName)
SELECT s.SiteId, u.UserName
FROM (VALUES (1), (2), (3), . . . ) s(SiteID) CROSS JOIN
(VALUES ('user1'), ('user2'), . . . ) u(UserName) LEFT JOIN
SiteSecurity ss
ON ss.SiteId = s.SiteId AND ss.LoginName = u.UserName
WHERE ss.SiteId IS NULL;