2015-06-27 42 views
1

嵌套查询我设法写这个查询:如何避免在PostgreSQL的

INSERT INTO UserRoles (UserId, RoleId) 
VALUES (@UserId, (SELECT Id FROM Roles WHERE Name = @Name)); 

它按预期工作。问题是,我觉得这是一个不好的方法来编写嵌套查询(这里 - 找到Roles表中匹配指定名称的角色的ID)。有没有可能做到这一点没有嵌套查询?

经验丰富的程序员可能会笑,但我正在努力学习这一点,我不知道如何让这个查询更好。我会非常感谢你的建议。

+1

为什么你觉得“嵌套查询”是一个问题?看起来你根本不想使用任何查询 - 你还能从“角色”中获取信息吗? – vol7ron

回答

5

将您的INSERT声明更改为使用INSERT INTO ... SELECT FROM构造如下所示。您可以参考Postgresql文档获取更多相关信息。

INSERT INTO UserRoles (UserId, RoleId) 
SELECT @UserId, Id FROM Roles WHERE Name = @Name;