2011-05-07 164 views
1

我有以下查詢失敗,我不明白爲什麼。顯然,代碼所抱怨的列在表格中。SQL查詢問題

查詢:

INSERT 
    INTO `ProductAudit` (`Id`, `Field`, `OldValue`, `NewValue`, `ChangedOn`) 
SELECT t.`ProductId`, 'Title', p.`Title`, t.`Title`, t.`ProcessedOn` 
    FROM `TempImport` t 
    LEFT JOIN `Product` p 
    ON t.`ProductId` = p.`Id` 
WHERE p.`Title` != t.`Title` 
    ON DUPLICATE KEY UPDATE 
     p.`ChangedOn` = VALUES(`ChangedOn`) 

表:

CREATE TABLE `ProductAudit` (
    `Id` varchar(32) NOT NULL, 
    `Field` varchar(16) NOT NULL, 
    `OldValue` text, 
    `NewValue` text, 
    `ChangedOn` date NOT NULL, 
    PRIMARY KEY (`Id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

錯誤:

Error Code: 1054 - Unknown column 'p.ChangedOn' in 'field list' 

回答

2

下表列出你在CREATE stateme nt for與您在查詢中引用的表不是同一個表。 P是Product表,而不是ProductAudit表。

+0

好眼睛,我看到了我的失敗點。謝謝! – 2011-05-07 01:24:36

+0

很高興能有所幫助。如果這解決了你的問題,我會建議接受答案,以結束這個問題。 – IAmTimCorey 2011-05-07 01:27:02

+0

爲了澄清故障,在ON DUPLICATE KEY部分中使用'ProductAudit'.'ChangedOn' = VALUES('ChangedOn')而不是p.'ChangedOn'。 **然而,**現在它根本沒有填充表中的任何內容(即使產品)表是空的。回到繪圖板:) – 2011-05-07 01:32:39

2

ON DUPLICATE KEY UPDATE短語中,您只能更新您嘗試插入的表格。