2009-03-06 15 views
10

하나의 필드 값이 다른 테이블에서 계산되는 행을 테이블에 삽입해야합니다. 두 가지 쿼리를 수행하고 경쟁 조건을 위험에 빠뜨리기보다는 모든 것을 한 문장으로 처리하는 것이 더 좋을 것이라고 생각했습니다.INSERT 문에서 하위 쿼리를 사용할 수 있습니까?

INSERT INTO `myTable` (`someData`, `averageAtThisTime`) 
VALUES (
    "some stuff", 
    SELECT AVG(`myField`) FROM `myOtherTable` 
) 

...하지만 작동하지 않습니다. 한 진술에서이 목표를 달성 할 수있는 방법이 있습니까? 그렇지 않다면, 당신의 추천은 무엇입니까?

답변

23
INSERT INTO `myTable` (`someData`, `averageAtThisTime`) 
select "some stuff", AVG(`myField`) 
FROM `myOtherTable` 
+0

나는 차가운 임의의'SELECT' 데이터를 몰랐습니다. 큰!! – Triztian

5

하위 쿼리는 괄호로 묶습니다. 이 코드는 작동해야합니다 :

INSERT INTO `myTable` (`someData`, `averageAtThisTime`) 
VALUES (
"some stuff", 
(SELECT AVG(`myField`) FROM `myOtherTable`) 
);