2009-09-29 22 views
5

初めてSQL Serverで作業を開始しましたが、テストデータの入力に問題があります。SQL ServerでSub-SELECTを使用して外部キーを挿入する方法

insert into Employee (
    EmployeeName, 
    DepartmentId 
) values (
    "John Doe", 
    (select Id from Department where DepartmentName = 'Accounting') 
); 

この文は、Oracleで正常に動作しますが、SQL Serverで私が手:一方が他方への外部キーを持っていると私は、次のSQLを使用して、新しいレコードを挿入できるようにしたいところ私は2つのテーブルを持っていますエラーメッセージ:

Subqueries are not allowed in this context. 

SQL Serverでこれを行う正しい方法はありますか?

答えて

10
INSERT INTO Employee 
    (EmployeeName, DepartmentId) 
SELECT 
    'John Doe' AS EmployeeName, Id AS DepartmentId 
FROM 
    Department WHERE DepartmentName = 'Accounting'; 
+0

素晴らしいです。どうもありがとう。 –

5

あなたは行うことができますつ以上の経理部門がある場合

insert into Employee (
    EmployeeName, 
    DepartmentId 
) 
SELECT 'John Doe', Id 
FROM Department 
WHERE DepartmentName = 'Accounting' 
1

あなたのクエリがOracleに失敗します。

INSERT 
INTO Employee 
     (
     EmployeeName, 
     DepartmentId 
     ) 
SELECT "John Doe", 
     (
     SELECT id 
     FROM Department 
     WHERE DepartmentName = 'Accounting' 
     ) 

は、そうでない場合は、単に他の人が提案しSELECT FROM Departmentの構文を使用します。あなたはこの動作に依存している場合

、この構文を使用します。 DeparmentsAccountingからnameセットで複数の行がある場合

注意は、しかし、この構文は、John Doe 2回以上挿入すること。

+0

あなたはそうです、それは失敗するでしょうが、それは2行を挿入するのとは対照的に私が望む動作です。私はちょうどいくつかのテストデータを入力するためにこれを使用しています。フィードバックいただきありがとうございます。 –

+0

'@Kevin Stembridge':失敗するか、2つの行を挿入したいのですか?私のクエリは失敗します。 – Quassnoi

関連する問題