2013-07-15 52 views
1

我不認爲這是可能的,但認爲我會檢查它是否是,並且如果不要求最有效的替代方法。使用INNER JOIN和WHERE更新MySQL中的兩個表

目的: 更新table_1table_2使用一個查詢與Inner JoinWHERE

目前我有:

UPDATE table_1 
    JOIN table_2 ON table_1.user_id= table_2.user_id 
SET 
    table_1.value = 9, 
    table_2.value_fan = 43 
WHERE 
    table_1.user_id = 1 AND table_2.fan_id =1 

這準確地根據WHERE狀態更新table_2,但所有條目更新於table_1其中table_1.user_id = 1 ...忽略條件table_2.fan_id = 1


編輯 對不起,我本來應該更清晰,我上面有一個錯字,這是目前矯正......下面也是SQLFiddle

http://sqlfiddle.com/#!2/58d7b/1

正如我希望的鏈接你可以看到Table_2_winnings只有一個用戶詹姆斯正確更新,獲得了任何獎金(因爲他有一個city_id = 1和group_id = 1)。但是group_id = 1中的table_1中的所有用戶都已更新。在哪裏我只希望James更新...

+3

這聽起來並不正確。你能否提供一個例子,最好通過[sqlfiddle](http://sqlfiddle.com)的方式? – eggyal

+2

僅當設置了table2列值時,table1中的條目如何更新? –

+0

已經更新,包括SQLFiddle的鏈接..對不起,困惑。 – Jim

回答

0
ON table_1.city= table_2.city 

是您的查詢中唯一的連接篩選器。由於城市可以在兩個表中多次出現,所以內部聯結就像一些交叉連接一樣。請參閱this fiddle。 所以對於獲得所需的列只增加了一個連接過濾

and table_1.user = table_2.user; 

所以,你的更新查詢將是:

UPDATE table_1,table_2  
SET 
    table_1.table_1_winnings = 6, 
    table_2.table_2_winnings = 43 
WHERE 
    table_1.city = 1 AND table_2.city_id =1 
and table_1.city= table_2.city 
and table_1.user = table_2.user; 

fiddle

+0

非常好,非常感謝您的幫助! – Jim