2009-03-06 9 views
10

Ich muss eine Zeile in eine Tabelle einfügen, wobei ein Feldwert aus einer anderen Tabelle berechnet wird. Anstatt zwei Fragen zu beantworten und eine Wettlaufsituation zu riskieren, dachte ich, es wäre besser, alles in einer Aussage zu machen.Kann ich eine Unterabfrage in einer INSERT-Anweisung verwenden?

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

... aber das funktioniert nicht. Gibt es eine Möglichkeit, dies in einer Aussage zu erreichen? Wenn nicht, was ist Ihre Empfehlung?

Antwort

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

Ich wusste nicht, dass Sie kalt arbitrary 'SELECT' Daten. Groß!! – Triztian

5

Ihre Unterabfrage sollte in Klammern stehen. Dieser Code sollte funktionieren:

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