2009-03-06 147 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 2011-02-22 17:27:49

5

您的子查詢必須括在括號內。 此代碼應工作:

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