小编典典

常量字符串列表中带有INNER JOIN的SQL INSERT

sql

我想创建一个SQL Server 2012查询,该查询将一个恒定的权限名称列表插入到表RolePermissions中,例如“
ViewUsersPermission”,“ ModifyUsersPermission”。

该表有两列:“ RoleID”(是Roles表的外键)和varchar列“ PermissionTypeName”。

INSERT INTO [dbo].[RolePermissions] ([PermissionTypeName], [RoleID])

   SELECT 'ViewUsersPermission' AS [PermissionTypeName]
   UNION ALL
   SELECT 'ModifyUsersPermission' AS [PermissionTypeName]
   UNION ALL
   SELECT 'ViewRolesPermission' AS [PermissionTypeName]

   INNER JOIN   (SELECT [RoleID] FROM [dbo].[Roles]
                WHERE [Name] = 'Administrator')

我正在寻找更好的解决方案。我想指定一个权限类型列表,例如:

SELECT FROM 'ViewUsersPermission', 'ModifyUsersPermission', 'ViewRolesPermission'

而不是使用UNION ALL构造。


阅读 191

收藏
2021-04-28

共1个答案

小编典典

假设您至少在2008年

SELECT RoleName
FROM   (VALUES('ViewUsersPermission'),
              ('ModifyUsersPermission'),
              ('ViewRolesPermission')) V(RoleName)
2021-04-28