我需要在表中插入一行,其中一个字段值是从另一个表计算的.我认为最好在一个声明中做到这一点,而不是做两个查询并冒着竞争条件冒险.
INSERT INTO `myTable` (`someData`, `averageAtThisTime`) VALUES ( "some stuff", SELECT AVG(`myField`) FROM `myOtherTable` )
......但这不起作用.有没有办法在一个声明中实现这一目标?如果没有,你的建议是什么?
INSERT INTO `myTable` (`someData`, `averageAtThisTime`) select "some stuff", AVG(`myField`) FROM `myOtherTable`
你的子查询应该括在括号中.这段代码应该有效:
INSERT INTO `myTable` (`someData`, `averageAtThisTime`) VALUES ( "some stuff", (SELECT AVG(`myField`) FROM `myOtherTable`) );