0

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

我有以下查询,但它并没有真正起作用。不过我真的很亲近。问题之一是数据库表 FolderPermission 中不能存在新插入的文件夹 ID,因为它不允许重复条目。因此,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  ) 
4

1 回答 1

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;
于 2013-07-28T13:58:06.857 回答