2011-02-04 80 views
1

我有一個InnoDB表格,列出了客戶訂單 - 該表格記錄了客戶的電子郵件地址,訂單的聯繫信息以及訂單ID。該表使用innodb,包含大約2.2億行。我沒有的是列出用戶的表格。使用InnoDB創建和使用外鍵填充表格

是否有可能使用外鍵來創建和填充將包含來自訂單表中數據的customer_ide-mail地址的表?

這是查詢我到目前爲止有:

INSERT INTO customers (email, last_order) 
    SELECT (email_address, order_date) FROM orders 
ON DUPLICATE KEY 
    UPDATE last_order = MAX(order_date, last_order); 

我相信這個查詢將建立數據庫,但它不會把客戶ID到訂單表中的行,我不知道這是否是最好的方法。有什麼建議麼?

+0

如果它沒有失敗,看起來不錯。 – Nishant 2011-02-04 20:26:03

回答

3

可以在2個步驟此實現它:

1,填寫customers表:

INSERT INTO customers (email, last_order) SELECT email_address, 
max(order_date) as last_order FROM orders GROUP by email_address; 

2,與客戶的IDS更新orders表(假設你有一個字段名爲customer_idorders表)

UPDATE orders o SET customer_id = 
    (SELECT id FROM customers WHERE email = o.email_address); 

最後,如果你想保持你的customers表一致,您可以將AFTER INSERT TRIGGER添加到orders表中,以使您的customers表保持最新狀態。