2016-08-02 58 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.'";