2016-08-02 43 views
1

这是一个简单的问题,但我觉得应该有一个优雅的解决方案。我有一个脚本,它的工作原理是利用这样的说法:MySQL插入select * from默认时间戳列

insert into table1 select * from table2 where pk = "'.$pk.'"; 

最近我想将列添加到table1到底是用默认值now()时间戳列。一般情况下会和我期待没有改变上述声明,但如果我添加了新的时间戳列,上面的语句将失败,并出现以下错误:

column count doesn't match value count

+0

请详细解释一下。更好地举例说明您的用例。 – 1000111

+0

是啊不小心推了保存 –

+0

'insert into jobticket.flatdestroyed(col1,col2)select col1,col2,.....'所以选择除时间戳之外的其他列并插入应该有除时间戳以外的列,if它的默认设置为当前时间戳,它应该做你想做的事情。 –

回答

1

以下是这2解决方案,无论是指定的列清单

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

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

0

对不起,往往一旦发生,作为我在这里问我的问题在stackoverflow我最终尝试了一些工作。尽管我失去了新列的默认功能,但我能够将问题中的陈述更改为可行的以下陈述。由于在这种情况下最后一列是硬编码的,它仍然以相同的方式工作。

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