2015-06-27 53 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;