10

1 つのフィールド値が別のテーブルから計算された状態で、テーブルに行を挿入する必要があります。2 つのクエリを実行して競合状態になる危険を冒すよりも、すべてを 1 つのステートメントで実行する方がよいと考えました。

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

...しかし、これは機能しません。これを1つのステートメントで達成できる方法はありますか? そうでない場合、お勧めは何ですか?

4

2 に答える 2

23
INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
select "some stuff", AVG(`myField`) 
FROM `myOtherTable`
于 2009-03-06T02:05:55.677 に答える
5

サブクエリは括弧で囲む必要があります。このコードは動作するはずです:

INSERT INTO `myTable` (`someData`, `averageAtThisTime`)
VALUES (
"some stuff",
(SELECT AVG(`myField`) FROM `myOtherTable`)
);
于 2012-01-23T16:10:20.450 に答える