如何避免PostgreSQL

时间:2015-06-27 22:10:35

标签: sql postgresql

我设法写了这个查询:

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

它按预期工作。问题是我觉得这是编写嵌套查询的坏方法(这里 - 在Roles表中找到与指定名称匹配的角色的id)。没有嵌套查询可以做到这一点吗?

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

1 个答案:

答案 0 :(得分:5)

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

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