INSERT from SELECT列数不匹配,如何快速追加NULL或空字符串?
解决MySQL插入时列数不匹配的问题
错误#1136 - Column count doesn't match value count at row 1的原因很明确:table2需要3列数据,但你的SELECT语句仅从table1返回1列,两者列数不匹配。
最简单的修正写法
直接在SELECT语句里追加需要的NULL或空字符串,让返回的列数和table2一致:
方式1:追加NULL
INSERT INTO table2 SELECT *, NULL, NULL FROM table1 WHERE name = 'Brian';
方式2:追加空字符串
INSERT INTO table2 SELECT *, '', '' FROM table1 WHERE name = 'Brian';
更严谨的写法(推荐)
指定table2的列名,避免后续表结构变动导致的问题:
-- 替换col1、col2、col3为table2的实际列名,col_from_table1为table1的列名 INSERT INTO table2 (col1, col2, col3) SELECT col_from_table1, NULL, '' FROM table1 WHERE name = 'Brian';
你之前写法的问题
你尝试的INSERT INTO table2 (SELECT * FROM test WHERE name = 'Brian', '','')是语法错误,额外的'',''必须放在SELECT语句内部,作为查询结果的一部分返回,不能放在SELECT外面。
内容的提问来源于stack exchange,提问作者Ned Hulton
相关产品推荐
相关产品推荐

