作为SQL查询的结果插入表值

问题描述:

我有三个表用户,角色和UserRoles。用户有一个称为Id的主键,Roles有一个名为Id的主键,UserRoles有两个外键引用用户和角色叫UserId和RoleId。作为SQL查询的结果插入表值

我需要在UserRoles中插入一个UserId,RoleId对作为用户和角色表上的SQL查询的结果。

的查询是这样的:

SELECT ID FROM Users WHERE Email = '[email protected]'; 

SELECT ID From Roles WHERE Name = 'Admin'; 

我需要使用它们像这样:

INSERT INTO UserRoles (UserId, RoleId) VALUES (SELECT ID FROM Users WHERE Email = '[email protected]', SELECT ID From Roles WHERE Name = 'Admin'); 

我怎样才能做到这一点。

试试这个。

INSERT INTO UserRoles (UserId, RoleId) 
    SELECT a.ID, b.ID 
    FROM Users as a,Roles as b 
    WHERE a.Email='[email protected]' 
    AND b.Name='Admin'; 

这应该为你工作..

declare @userId int, @roleid int 
    select @userId = Id FROM Users 
    select @roleid = Id from Roles 
    insert into UserRoles (UserId, RoleId) value (@userId,@roleid) 

请考虑您的WHERE条件为选择查询。

+0

感谢您的回答。我必须接受@Manish给出的答案,因为它不需要我知道sql columns字段的数据类型。 –

+1

可以有多种方式来实现相同的结果和路径.. :) – user7417866