0

ネストされたselectでINSERTステートメントを使用すると問題が発生します。クエリはSQLManagementStudioで実行すると機能しますが、コードで実行するとエラーが返されます。

クエリは次のようになります。

INSERT INTO [Projects] 
     VALUES ('1', 'None', '2', '2010/09/08 10:36:30 AM', 4, 1, 4, '6', '', 'n/a', 'no', 'n/a', 'None', 0, 'n/a', 'n/a', 'no', 'A3', 'no', 'Blnk', 'aa',
  (SELECT status.statusID from status where name = 'STOPPED')

)。

返されたエラー:

Subqueries are not allowed in this context. Only scalar expressions are allowed

別の選択クエリを実行する以外に、ステータスのIDがわからないため、これについての説明はありますか?また、この問題を解決するにはどうすればよいですか?

4

2 に答える 2

3

あなたはこれを試すことができます...

INSERT INTO [Projects] 
SELECT '1', 'None', '2', '2010/09/08 10:36:30 AM', 4, 1, 4, '6', '', 'n/a', 'no', 'n/a', 'None', 0, 'n/a', 'n/a', 'no', 'A3', 'no', 'Blnk', 'aa',
status.statusID from status where name = 'STOPPED'

サブクエリから複数の行が含まれる可能性があるため、エラーは理にかなっています。私の提案では、複数の行になってしまう可能性もあります。フィルタにもっとあるべきですか?

于 2010-09-08T08:51:27.970 に答える
1

最良の方法は、ストアドプロシージャを作成することです。

declare @statusID int;

SELECT @statusID=status.statusID from status where name = 'STOPPED'

INSERT INTO [Projects] 
     VALUES ('1', 'None', '2', '2010/09/08 10:36:30 AM', 4, 1, 4, '6', '', 'n/a', 'no', 'n/a', 'None', 0, 'n/a', 'n/a', 'no', 'A3', 'no', 'Blnk', 'aa',@statusID);
于 2010-09-08T08:53:50.663 に答える