2011-06-09 52 views
4

當試圖執行此查詢:MySQL的加入子句中更新

>mysql_query("UPDATE contracts 
       SET x = '1' 
       FROM contracts 
       INNER JOIN employees 
       ON contracts.contract_employeeid=employees.employee_id 
       WHERE experience >= '6'") or die(mysql_error()); 

我收到以下錯誤信息:

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本附近使用來自合同INNER JOIN員工ON contracts.contract_employeeid = employees.employee_id WHERE經驗> =「6」

在的話,我需要設置正確的語法手冊對於具有6年以上經驗的員工,在表格「合同」上x = 1(這樣做,我需要加入employee_id = contract_employeeid中的「僱員」表格,因爲他們的經驗存儲在該表格中)

+1

提取SQL並直接針對數據庫運行以縮小問題的位置語法問題的位置 – 2011-06-09 14:35:35

回答

4

您可以在SET語句之前移動查詢的JOIN部分:

UPDATE contracts 
INNER JOIN employees ON contracts.contract_employeeid = employees.employee_id 
SET x = '1' 
WHERE experience >= '6' 
+0

與Joe Stefanelli的解決方案(儘管我不知道爲什麼)相比工作正常並且速度更快。非常感謝! – 2011-06-09 14:46:40

+0

我也不確定。兩個查詢都是等效的AFAIK。 – 2011-06-09 14:50:23

1
UPDATE contracts, employees 
    SET contracts.x = '1' 
    WHERE contracts.contract_employeeid=employees.employee_id 
     AND employees.experience >= '6'