INSERT INTO其中一些数据依赖于select

时间:2013-09-29 17:25:42

标签: mysql sql select insert insert-into

我理解当所有输入数据都已知时如何进行插入,并且我知道如何在所有数据依赖于select时插入,但我无法找到如何执行之间。我现在在哪里:

INSERT INTO takes (stu_id, "CS-001", 1, "Autumn", 2009, null)
VALUES (SELECT id AS stu_id
FROM student
WHERE dept_name = "Comp. Sci.")

因此我知道除了学生的id之外的所有其他输入数据,但MySQL只是给我一个语法错误。

2 个答案:

答案 0 :(得分:1)

INSERT INTO takes (stu_id, col2, col3, col4, col5, col6) 
SELECT id, 'CS-001', 1, 'Autumn', 2009, null
FROM student 
WHERE dept_name = 'Comp. Sci.'

我不知道您的目标列名称 - 您必须将它们替换为上述查询中的实际列名。

答案 1 :(得分:0)

插入查询的结构可以这样:

insert into table
(field1, field2, etc)
(value1, value2 etc)

或者像这样:

insert into table
(field1, field2, etc)
select this, that, etc
from etc

你试图将两者结合起来。这是你收到错误的原因之一。

juergen的回答是第二个结构的一个例子。他的这就是领域和常数价值的结合。那完全没问题。如果您遇到语法错误,则会在您的详细信息中显示。他的答案显示了正确的总体思路。

逐步构建查询通常是值得的。从这开始:

insert into takes
(stu_id)
select id
from student
where dept_name = 'Comp. Sci'

如果可行,请在括号内添加一个字段以及适合查询的select子句的任何字段。继续这些婴儿步骤,直到你做对了。这是我经常采取的一种方法。