这是一个简单的问题,但我觉得应该有一个优雅的解决方案。我有一个使用这个语句的脚本:
insert into table1 select * from table2 where pk = "'.$pk.'";
最近,我想在table1
的末尾添加一列,这是一个默认值为now()
的时间戳列。这通常有效,我希望不必更改上面的语句,但是如果我添加新的timestamp列,上面的语句将失败并出现以下错误:
列数与值计数
不匹配
答案 0 :(得分:1)
以下是2个解决方案,要么指定列列表
insert into table1 (col1, col2) select col1, col2 from table2 where pk = "'.$pk.'";
或
在table1中创建相同的列以避免查询中的列列表
答案 1 :(得分:0)
抱歉,经常发生这种情况,一旦我在stackoverflow上问我的问题,我最终会尝试一些有效的方法。虽然我丢失了新列的默认功能,但我能够将问题中的语句改为以下语句。由于最后一列在这种情况下是硬编码的,因此它的工作方式仍然相同。
master