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