2011-12-15 79 views
2

我剛剛在幾個小時前做過這個,但現在我無法重複我的「壯舉」。無法從另一個表格更新表

這就是我想要做的事:

UPDATE TABLE sl_adr a, sl_address b 
SET a.fk_adrID = b.id 
WHERE a.street1 = b.street1 
AND a.postal_code = b.postal_code 
AND a.city = b.city 
AND a.fk_countryID = b.fk_countryID 

運行此我得到一個錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
'UPDATE TABLE sl_adr a, sl_address b
SET a.fk_adrID = b.id
WHERE a.street1 = b.'
at line 1

谷歌搜索和尋找在這裏後,我仍然無法找出是什麼錯誤。

在蟾蜍我可以看到,我們a我們用紅色加下劃線。但不明白爲什麼。

+0

您通常不會更新您正在更新的表。別名來自`FROM`部分,不是嗎?或者等等..也許我太困了 – Nonym 2011-12-15 04:52:43

+0

我已經工作了近20個小時了....所以我的頭不在這裏 - 但是,根據不同的搜索,我可以使用別名。 – Steven 2011-12-15 05:00:45

回答

3

您的查詢幾乎可以,只有TABLE關鍵字是多餘的。

UPDATE 
    sl_adr a, sl_address b 
SET 
    a.fk_adrID = b.id 
WHERE 
    a.street1 = b.street1 
    AND a.postal_code = b.postal_code 
    AND a.city = b.city 
    AND a.fk_countryID = b.fk_countryID 

也,這個人是可能的 -

UPDATE sl_adr a 
JOIN sl_address b 
    ON a.street1 = b.street1 
    AND a.postal_code = b.postal_code 
    AND a.city = b.city 
    AND a.fk_countryID = b.fk_countryID 
SET 
    a.fk_adrID = b.id 
0

別名是在更新語句精絕。我認爲這裏的問題是你需要用UPDATE替換UPDATE TABLE。像這樣:

UPDATE sl_adr a, sl_address b 
SET a.fk_adrID = b.id 
WHERE a.street1 = b.street1 
AND a.postal_code = b.postal_code 
AND a.city = b.city 
AND a.fk_countryID = b.fk_countryID;