2012-06-12 40 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;