使用SELECT插入数据时报INSERT目标列多于表达式错误如何解决
错误根因
报错的核心问题是 SELECT 子句后多余的括号将多字段包装成了单个行表达式,和目标插入列的数量不匹配:
- 你写的
SELECT (title, len, rating, count, album_id) FROM track_raw只会返回1个由5个字段拼接而成的复合行值,而非5个独立的列 - INSERT语句指定了5个待插入的目标列,数据库检测到仅传入1个表达式,因此抛出列数不匹配的错误。
修复方法
直接去掉SELECT后包裹字段的括号即可,修正后的SQL如下:
INSERT INTO track (title, len, rating, count, album_id) SELECT title, len, rating, count, album_id FROM track_raw;
额外说明:目标表的id字段如果是自增主键,不需要在INSERT中指定,数据库会自动生成对应值,不会影响本次插入逻辑。
内容的提问来源于stack exchange,提问作者Mark Garnett
相关产品推荐
相关产品推荐

