作为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条件为选择查询。
感谢您的回答。我必须接受@Manish给出的答案,因为它不需要我知道sql columns字段的数据类型。 –
可以有多种方式来实现相同的结果和路径.. :) – user7417866