2012-06-12 46 views
10

我試圖插入額外的行到需要從另一個表中檢索值的表中。下面是一個例子查詢:如何在MySQL'插入'語句中使用'select'

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

b.students表的結構是rollno, ssn, name

我知道上面的查詢是錯誤的。有沒有辦法在插入一行時從其他表中檢索1個值?

+0

我試了一下選擇語句周圍沒有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

從你的第二個查詢中得到它。謝謝 – user1074122

3

列在INSERT INTO和選擇必須等於

insert into grades (field1, field2) 
select field1,field2 from students where ssn=12345;