2013-04-07 50 views
1

我有2個相同的表。 「數字」和「產品代碼」是唯一的關鍵。這個獨特的組合鍵適用於兩個表格。Mysql:從源表更新記錄到目標表

我想從表2中插入記錄到表1中。它可能是一個記錄唯一鍵已經存在。在這種情況下,記錄需要更新所有字段。但是...記錄只需要瞭解從表2中記錄的日期字段是最近再從表中的日期字段1

我嘗試以下進行更新:

INSERT INTO Table_dest (Number, Productcode, TransactionDate, 
         TransactionTime, Price) 
SELECT 
    Number, Productcode, TransactionDate, TransactionTime, Price 
FROM 
    Table_source 
WHERE 
    Table_source.TransactionDate >= Table_dest.TransactionDate 
    AND Table_source.TransactionTime > Table_dest.TransactionTime; 

但它給我錯誤在WHERE子句中。 它也給重複的錯誤,但我不知道如何地址。 任何人有任何建議? 謝謝!

回答

0

您應該按照這個格式,而將兩個表:

INSERT INTO tableA (a1, a2, a3) 

SELECT b1, b2, b3 
FROM tableB b 
JOIN tableA a ON a.a1 = b.b1 
WHERE (CONDITION) 

看它是否爲你工作。

+0

嘗試運行只選擇查詢並檢查它的結果。源表和目標表中的列數必須匹配。 – Harpreet 2013-04-07 10:57:00

+0

謝謝!我做了以下事情:INSERT INTO Table_dest(Number,Productcode,TransactionDate,TransactionTime,Price)SELECT Number,Productcode,TransactionDate,TransactionTime,Price FROM Table_source s LEFT JOIN Table_dest d ON s.Number = d.Number AND s.Productcode = d .Productcode WHERE s.TransactionDate> = s.TransactionDate AND s.TransactionTime> d.TransactionTime;但是現在它給了我一個錯誤信息:「字段列表中的列'數字是不明確的」。 – 2013-04-07 11:02:41

+0

由於字段以相同的方式命名,所以此錯誤結果。像這兩個表都有同名的字段。 MySQL引擎無法決定遵循哪個表。試試這樣的:'SELECT s.Number,s.Productcode' – Harpreet 2013-04-07 11:07:42