使用INNER JOIN和WHERE更新MySQL中的两个表

时间:2013-07-15 20:41:16

标签: 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

这会根据table_2条件正确更新WHERE,但所有条目都会在table_1中更新table_1.user_id = 1 ...忽略条件table_2.fan_id = 1


EDIT 对不起,我应该更清楚,我上面有一个拼写错误,现在已经更正了...下面也是SQLFiddle的链接

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

我希望你能看到Table_2_winnings只有一个用户James正确更新,获得任何奖金(因为他有一个city_id = 1和group_id = 1)。但是,group_id = 1中table_1中的所有用户都会更新。我只想让詹姆斯更新......

1 个答案:

答案 0 :(得分:2)

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