2009-03-06 10 views
10

テーブルに行を挿入する必要があります.1つのフィールド値は別のテーブルから計算されます。 2つのクエリを実行し、競合状態を危険にさらすのではなく、1つのステートメントですべてを実行する方が良いと思いました。INSERT文の中でサブクエリを使用できますか?

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

...しかし、これは機能しません。 1つの声明でこれを達成する方法はありますか?そうでない場合、あなたのお勧めは何ですか?

答えて

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`) 
); 
関連する問題