2011-10-23 3 views
0

나는이 문제를 가지고있다. 그것은 곧 문제가 아니지만 가능한 경우 하나 이상의 쿼리를 사용하지 않기를 바란다.외래 키를 사용하는 MySQL INSERT 구문

다른 테이블의 데이터를 사용하여 테이블에 데이터를 삽입하고 싶습니다. 여기 예입니다

TABLE1 
id name value max_data diff 

와 여기가의 표 2

TABLE2 
id name max_data 
1 nm1 8000 
2 nm2 9000 
3 nm3 9500 
4 nm4 9600 
... 

내가 표 2에서 ID를 알고 삽입하는 동안 내가 그것에서 이름과 max_data을 사용하려면 : 내가 표가 있습니다. 다음과 같은 내용 :

INSERT INTO table1 (value, diff, name, max_data) VALUES (5.0, -0.3, table2.name table2.max_data) WHERE table2.id = 3 
+0

'insert ... select from'형식 쿼리가 아닌 한 insert 문에서 'where'절을 사용할 수 없습니다. –

+0

이것은 외래 키와 아무 관련이 없습니다. – GolezTrol

답변

1

의미 하시겠습니까?

insert into table1 (value, diff, name, max_data) 
select 5.0, -0.3, name, max_data 
from table2 
where id = 3 

SELECT 절에 원하는 모든 리터럴을 포함 할 수 있습니다. 이 기술을 사용하여 한 번에 여러 행을 삽입 할 수도 있습니다.

+0

그것이 효과가있는 것 같습니다. 지금 시도해 보겠습니다. –

+0

여러 행 .. u는 where 절에 id를 삽입하지 않으면 동일한 값을 삽입하고 table2의 각 행에 대해 diff를 삽입한다는 의미입니다. –

+0

@Ika :'select ... '가 3 행을 생성한다면 3 행을 삽입 할 것입니다 (아마도'name'과'max_data' 값이 다를 것입니다). 'table2.id'가 프라이 머리 키라면 당신은 하나의 로우만을 삽입 할 것입니다. –

관련 문제