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

时间:2013-07-28 13:54:13

标签: sql sql-server

我有两张桌子。文件夹和FolderPermission 有些文件夹由于某种原因没有权限,所以我试图根据模型文件夹ID = 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  ) 

1 个答案:

答案 0 :(得分:1)

您可以使用cross join从模型到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;
相关问题