2012-06-12 12 views
10

別のテーブルから値を取得する必要があるテーブルに追加の行を挿入しようとしています。以下の例のクエリです:b.studentsテーブルのMySQLの 'insert'ステートメントで 'select'を使用する方法

insert into a.grades (rollno, grade) 
values(select rollno from b.students where ssn=12345, 'A'); 

構造rollno, ssn, nameです。

私は上記のクエリが間違っていることを知っていました。行を挿入している間に他のテーブルから1つの値を取得する方法はありますか?インサート内

+0

を私はそれを試してみましたselect文のまわりにparanthesisはありません。今私は()を追加することでそれを得た。 – user1074122

答えて

30
INSERT INTO a.grades (rollno, grade) 
    SELECT rollno, 'A' FROM b.students WHERE ssn = 12345; 

一部のDBMSは、SELECT文の周りに括弧の余分なセットで、次受け入れる:

INSERT INTO a.grades (rollno, grade) 
    VALUES((SELECT rollno FROM b.students WHERE ssn = 12345), 'A'); 
+1

は2番目のクエリから取得しました。ありがとう – user1074122

3

列へと等しくなければなりません選択

insert into grades (field1, field2) 
select field1,field2 from students where ssn=12345; 
関連する問題