2013-09-29 3 views
0

모든 입력 데이터를 알고있을 때 삽입을 수행하는 방법을 알고 있고 모든 데이터가 선택에 따라 달라지는 경우 삽입하는 방법을 알고 있습니다. 하지만 그 사이에 어떻게 할 수있는지를 찾을 수는 없습니다. 지금 내가있는 곳 :일부 데이터는 선택에 따라 달라집니다.

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은 구문 오류를 발생시킵니다.

답변

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.' 

대상 열 이름을 모르겠습니다. 위의 쿼리에서 실제 열 이름으로 바꿔야합니다.

+0

그게 내 첫 번째 시도 였고 전혀 작동하지 않습니다 (심지어 stu_id 대신에 id 일 때도). 이것은 오류 코드 1064 – user2171584

+0

@ user2171584와 함께 막대한 구문 오류입니다 : 이것은 대상 테이블의 올바른 열 이름과 함께 작동합니다. –

+0

@ user2171584 : [SQLFiddle 예제] (http://sqlfiddle.com/#!2/aafde6/1) –

0

삽입 쿼리는 다음과 같이 구성 할 수 있습니다

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

또는이 같은 :

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

당신은 두 가지를 결합했습니다. 이것이 오류가 발생한 이유 중 하나입니다.

제르겐의 대답은 두 번째 구문의 예입니다. 이 점과 그것은 필드와 상수 값의 조합입니다. 괜찮습니다. 구문 오류가 발생하는 경우 세부 정보에 오류가 있습니다. 그의 대답은 올바른 일반적인 생각을 보여줍니다.

단계별로 쿼리를 작성하는 것이 좋습니다.

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

그럴 경우, 괄호 안에 하나의 필드를 추가하고 쿼리의 select 절에 적절한 필드를 추가하십시오. 너가 맞을 때까지이 아기 단계를 유지 하십시요. 그것은 제가 자주하는 접근법입니다.

관련 문제