2012-11-18 59 views
0

我有一個約30個字段的MySQL表。我需要創建一個包含這些字段子集的第二個表格,再加上CURDATE()來跟蹤他們的支出歷史記錄。我得到的語法錯誤,但也許我的方法是不正確的開始。請檢查此,謝謝!如何創建一個新的MySQL表作爲主表中字段的子集?

INSERT INTO history (customer_id, name, amount, date_recorded) 
set date_recorded = CURDATE() 
SELECT customer_id, name, amount 
FROM master; 

什麼我試圖在MySQL做在上面的例子是從主客戶列表複製CUSTOMER_ID,名稱,數量的領域,包括今天的日期。對於歷史表中的記錄佈局是在這裏:

+---------------+------------------+------+-----+---------+----------------+ 
| Field   | Type    | Null | Key | Default | Extra   | 
+---------------+------------------+------+-----+---------+----------------+ 
| id   | int(10) unsigned | NO | PRI | NULL | auto_increment | 
| customer_id | int(11)   | NO | PRI | NULL |    | 
| name   | varchar(255)  | NO |  | NULL |    | 
| amount  | int(11)   | NO |  | NULL |    | 
| date_recorded | date    | NO |  | NULL |    | 
+---------------+------------------+------+-----+---------+----------------+ 

回答

1

試試這個::

INSERT INTO history (customer_id, name, amount, date_recorded) 

SELECT customer_id, name, amount, CURDATE() 
FROM master 

另一種方式是::

INSERT INTO history (customer_id, name, amount, date_recorded) 

SELECT customer_id, name, amount, DATE(now()) 
FROM master 
+0

感謝張貼。不會選擇搜索主人當前日期的CURDATE()嗎? 我試了上面,它沒有改變返回這個: 查詢OK,0行受影響(0.00秒) 記錄:0重複:0警告:0 – Edward

+0

沒有它不需要,它會獲取列名的值: customer_id,名稱,金額和'CURDATE()'將從系統返回日期。.. –

+0

明白了!我的錯誤是,我重新創建了表格而沒有重新填充我的測試表。現在就工作,也感謝您的解釋! – Edward

相關問題