如何改写基于同表SELECT计算结果的INSERT语句?
解决INSERT结合SELECT子查询的语法错误问题
你遇到的语法错误是因为VALUE()关键字的使用方式不对,它只能直接跟具体数值,不能直接嵌套SELECT子查询。可以用两种方式改写:
方法一:使用INSERT...SELECT语法(推荐)
直接把SELECT语句作为插入的数据源,不需要VALUE关键字:INSERT INTO numbers (x) SELECT MAX(x)+2 FROM numbers;这种写法更符合MySQL插入查询结果的标准语法,可读性也更强。
方法二:给子查询额外添加括号
如果一定要保留VALUE关键字,需要把整个SELECT子查询用括号包裹,让MySQL把它识别为单个值:INSERT INTO numbers VALUE( (SELECT MAX(x)+2 FROM numbers) );
两种写法都能实现你要的需求:找出表中最大整数加2,作为新行插入numbers表。
内容的提问来源于stack exchange,提问作者Stewart
相关产品推荐
相关产品推荐

