2016-08-18 37 views
0

我嘗試更新使用INNER JOIN像這樣的表(dummy.ID設置主鍵):MySQL的sql_safe_update恆定誤差

UPDATE dummy 
INNER JOIN original 
    ON dummy.FirstName =original.FirstName 
    AND dummy.LastName = original.LastName 
SET dummy.col1 = original.col1 
WHERE dummy.ID <> 0; 

SQL_SAFE_UPDATE激活,而不是被alowed以任何方式來禁用它,因爲上述聲明我得到着名的錯誤:You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

我試過WHERE KEY IN (,),WHERE KEY NOT NULL,以及其他很多實現WHERE子句的方法,但是所有的東西都失敗了,出現了同樣的錯誤。它工作的唯一方法是使用WHERE dummy.ID = 1,但是這當然只更新一行。

難道是因爲我用了JOIN?有沒有辦法在不禁用sql_safe_update的情況下執行此更新?

+0

那麼'ID'列是關鍵嗎? –

+0

是的,在我的帖子中說,它是 – MRM

回答

0

我設法找到答案,所以如果其他人與我自己有同樣的問題,我會發布答案。 問題在於JOIN的使用,由於某些原因,編譯器根據sql_safe_update將其識別爲錯誤使用的WHILE

UPDATE dummy 
SET col1 = 
(
    SELECT col1 FROM original 
    WHERE dummy.FirstName = original.FirstName 
     AND dummy.LastName = original.LastName 
) 
WHERE dummy.ID <> 0;