MySQL插入带有默认时间戳列的select*from

MySQL插入带有默认时间戳列的select*from,mysql,Mysql,这是一个简单的问题,但我觉得应该有一个优雅的解决方案。我有一个脚本,它使用以下语句: insert into table1 select * from table2 where pk = "'.$pk.'"; 最近我想在table1的末尾添加一列,这是一个带有默认值now()的时间戳列。这通常是有效的,我希望不必更改上述语句,但如果我添加新的timestamp列,上述语句将失败,并出现以下错误: 列计数与值计数不匹配 这里有两个解决方案,或者指定您的列列表 insert into table1

这是一个简单的问题,但我觉得应该有一个优雅的解决方案。我有一个脚本,它使用以下语句:

insert into table1 select * from table2 where pk = "'.$pk.'";
最近我想在
table1
的末尾添加一列,这是一个带有默认值
now()
的时间戳列。这通常是有效的,我希望不必更改上述语句,但如果我添加新的timestamp列,上述语句将失败,并出现以下错误:

列计数与值计数不匹配


这里有两个解决方案,或者指定您的列列表

insert into table1 (col1, col2) select col1, col2  from table2 where pk = "'.$pk.'";


在表1中创建相同的列以避免查询中的列列表

对不起,经常发生的情况是,只要我在stackoverflow上提出问题,我就会尝试一些有效的方法。我能够将问题中的语句更改为以下内容,虽然我失去了新专栏的默认功能。因为最后一列在本例中是硬编码的,所以它仍然以相同的方式工作

insert into table1 select *, now() from table2 where pk = "'.$pk.'";

请再解释一下。更好地举例说明您的用例。是的,意外地将save
插入到jobticket.flatdestroyed(col1,col2)选择col1,col2,..…
因此,选择除上的时间戳以外的列,并将其插入到除时间戳以外的列中,如果将其默认设置为当前时间戳,则应执行您想要的操作。@AbhikChakraborty是的,谢谢您,我希望不必这样做,但我可以看到您的解决方案会起作用。也很抱歉,我刚刚编辑了Q,我想将该列添加到
table1
。唯一的原因是有大约100列。。。我想我只是在偷懒。所以你给我们看了有效的陈述,但没有给我们看无效的陈述?你想让我帮你做那不起作用的陈述吗?o、 o