Sql 基于另一个表的现有项以增量方式插入记录

Sql 基于另一个表的现有项以增量方式插入记录,sql,sql-server,Sql,Sql Server,我有两张桌子。文件夹和文件夹权限 有些文件夹由于某些原因没有权限,因此我尝试根据folderID=1207模型将权限分配给没有权限的文件夹 我有下面的查询,它实际上不起作用。不过我真的很接近。问题之一是新插入的folderID不能存在于数据库表FolderPermission中,因为它不允许重复条目。因此,必须根据不存在的记录输入FolderID。这是我的密码: INSERT INTO FolderPermission (FolderID, PermissionID,AllowAccess,Ro

我有两张桌子。文件夹和文件夹权限 有些文件夹由于某些原因没有权限,因此我尝试根据folderID=1207模型将权限分配给没有权限的文件夹

我有下面的查询,它实际上不起作用。不过我真的很接近。问题之一是新插入的folderID不能存在于数据库表FolderPermission中,因为它不允许重复条目。因此,必须根据不存在的记录输入FolderID。这是我的密码:

INSERT INTO FolderPermission (FolderID, PermissionID,AllowAccess,RoleID,UserID,CreatedByUserID,CreatedOnDate,LastModifiedByUserID,LastModifiedOnDate)
          SELECT FolderID, PermissionID,AllowAccess,RoleID,UserID,CreatedByUserID,CreatedOnDate,LastModifiedByUserID,LastModifiedOnDate
          FROM FolderPermission
          WHERE FolderID=1207
SELECT FolderID
FROM Folders 
WHERE FolderID NOT IN (SELECT DISTINCT FolderID  
                         FROM FolderPermission  ) 

您可以使用
交叉连接将两个查询合并为一个查询,从模型到ID列表:

INSERT INTO FolderPermission (FolderID, PermissionID, AllowAccess, RoleID, UserID, 
                              CreatedByUserID, CreatedOnDate, LastModifiedByUserID,
                              LastModifiedOnDate
                             )
    SELECT f.FolderID, PermissionID, AllowAccess, RoleID,UserID, CreatedByUserID, CreatedOnDate,
           LastModifiedByUserID, LastModifiedOnDate
    FROM FolderPermission fp cross join
         (SELECT FolderID
          FROM Folders 
          WHERE FolderID NOT IN (SELECT DISTINCT FolderID  
                                 FROM FolderPermission
                                )
         ) f
    WHERE fp.FolderID = 1207;