3

これが可能だとは思いませんが、可能かどうかを確認し、そうでない場合は最も効率的な代替手段を求めると思いました.

目的: andを使用して 1 つのクエリを 更新table_1して使用するtable_2Inner 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

table_2これは条件に従って正しく更新されWHEREますが、すべてのエントリはtable_1どこで更新されtable_1.user_id = 1ます...条件を無視しますtable_2.fan_id = 1


編集申し訳ありませんが、もっと明確にする必要がありました。上記のタイプミスが修正されました...以下はSQLFiddleへのリンクでもあります

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

ご覧のように、Table_2_owned が正しく更新され、James という 1 人のユーザーだけが賞金を獲得しています (彼は city_id =1 および group_id =1 であるため)。ただし、group_id = 1 の table_1 のすべてのユーザーが更新されます。ジェームズだけを更新したいところ...

4

1 に答える 1

3
ON table_1.city= table_2.city

is the only join filter in your query. Since city can come multiple times in both tables, inner join acts like some what a cross join. See this fiddle . So for getting the required columns only added one more join filter

and table_1.user = table_2.user;

So your update query will be :

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

于 2013-07-16T10:40:31.267 に答える