从常量字符串列表中使用INNER JOIN进行SQL INSERT

Ton*_*oni 3 sql sql-server

我想创建一个SQL Server 2012查询,它将一个常量的权限名称列表,例如"ViewUsersPermission","ModifyUsersPermission"插入表RolePermissions.

此表有两列:"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')
Run Code Online (Sandbox Code Playgroud)

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

SELECT FROM 'ViewUsersPermission', 'ModifyUsersPermission', 'ViewRolesPermission' 
Run Code Online (Sandbox Code Playgroud)

而不是使用UNION ALL构造.

Mar*_*ith 7

假设你至少在2008年

SELECT RoleName
FROM   (VALUES('ViewUsersPermission'),
              ('ModifyUsersPermission'),
              ('ViewRolesPermission')) V(RoleName) 
Run Code Online (Sandbox Code Playgroud)