我设法写了这个查询:
INSERT INTO UserRoles (UserId, RoleId)
VALUES (@UserId, (SELECT Id FROM Roles WHERE Name = @Name));
它按预期工作。问题是我觉得这是编写嵌套查询的坏方法(这里 - 在Roles
表中找到与指定名称匹配的角色的id)。没有嵌套查询可以做到这一点吗?
经验丰富的程序员可能会笑,但我正在努力学习这一点,我不知道如何才能使这个查询变得更好。我非常感谢你的建议。
答案 0 :(得分:5)
使用INSERT
构造将您的INSERT INTO ... SELECT FROM
语句更改为如下所示。您可以参考Postgresql
文档获取相同的更多信息。
INSERT INTO UserRoles (UserId, RoleId)
SELECT @UserId, Id FROM Roles WHERE Name = @Name;