2013-10-16 89 views
0

我想跟隨更新查詢連接,但它不會更新匹配行。MySQL更新多個連接不工作

UPDATE table1 T1 
INNER JOIN table2 T2 ON T2.id=10 
INNER JOIN table3 T3 ON T3.category_id=T2.category_id 
SET T1.value=T3.value 
WHERE T1.id=T3.id 

是否支持使用嵌套連接更新查詢?

+0

什麼錯誤? –

+0

它不會更新匹配的行 – LoganPHP

回答

2
UPDATE table1 T1 
SET T1.value=T3.value 
INNER JOIN table2 T2 ON T2.id=10 
INNER JOIN table3 T3 ON T3.category_id=T2.category_id 
WHERE T1.id=T3.id 
+0

您應該發表評論,「SET」必須跟在目標表之後。 – Kermit

+1

它引發語法錯誤,如「1064 - 您的SQL語法中有錯誤;檢查對應於您的MySQL服務器版本的手冊,以在'INNER JOIN table2'附近使用正確的語法 – LoganPHP

+0

UPDATE T1 SET T1.value = T3 .value的 FROM表1 T1 INNER JOIN table2的T2 ON T2.id = 10 INNER JOIN表3 T3 ON T3.category_id = T2.category_id WHERE T1.id = T3.id – Deepak

1

我很想說你的查詢應該可以工作。但是,也許MySQL不喜歡你的第二行的連接條件與table1沒什麼關係?

以下工作?

UPDATE table1 T1 
    INNER JOIN table3 T3 ON T3.id = T1.id 
    INNER JOIN table2 T2 ON T2.category_id = T3.category_id 
SET T1.value = T3.value 
WHERE T2.id = 10 
+0

對不起@凱文,沒有看到你回答 – Strawberry

0

這將是更ususal地看到,查詢這樣寫......

UPDATE table1 T1 
    JOIN table3 T3 
    ON t3.id = t1.id 
    JOIN table2 T2 
    ON T2.category_id = T3.category_id 
    SET T1.value = T3.value 
WHERE T2.id=10;