我不认为这是可能的,但我想我会检查是否可行,如果没有,则要求最有效的选择。
目的:
使用table_1
和table_2
Inner Join
和WHERE
目前我有:
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中的所有用户都会更新。我只想让詹姆斯更新......
答案 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;