2017-08-30 113 views
0

如果我想使使用INNER JOIN更新查詢,我怎麼在這種情況下,這樣做:更新查詢INNER JOIN的mysqli

我有一個users表& user_settings表。 users包含列iduser_settings包含列userid。我想做的事情,如:

UPDATE users_settings SET commets = 0 WHERE email = "$email"; 

user_settings不含email,所以我想從users表,其中iduseridemail

+0

爲用戶和user_settings提供表格模式@Omega Cebbo –

回答

0

您可以使用此查詢。它會工作

UPDATE users_settings SET commets = 0 WHERE userid 
IN (SELECT id FROM users WHERE email = "$email"); 
0

試試這個:

UPDATE user_settings s 
INNER JOIN users u ON s.userid=u.id 
SET commets = 0 WHERE email = "$email"; 

注:應該在這些情況下,相同的電子郵件沒有用戶。

0

以下將是有益的

UPDATE US SET US.Comments = 0 
FROM User_settings US, Users U 
WHERE US.Userid = U.id 
AND U.email = 'emailid' 
0

JOIN s爲在性能上比SUB QUERIES方面略勝一籌。參考文獻here

因此,而不是使用這個 -

UPDATE users_settings SET commets = 0 WHERE userid 
IN (SELECT id FROM users WHERE email = "$email"); 

我會建議使用此INNER JOIN -

UPDATE users_settings 
SET commets = 0 
FROM user_settings 
INNER JOIN users 
on users.id = user_settings.userid --JOIN CONDITION 
WHERE users.email = "$email" ;  --SELECTION/SLICING CRITERION 

希望這有助於。