2016-02-28 39 views
0

我在这个问题上摸不着头脑。MySQL为所有用户更新多行

我必须更新数据库表中所有在该数据库表中有多个条目的用户的分数字段......但只有在下面满足其中一个参数/约束条件时才会更新分数字段。

例如,对于2个守门员,表中有两行(每个用户),但其中只有一行将被更新。下面的工作,但只有当有一个用户...所以只有2个数据库表中的2个守门员的行。

$result = mysqli_query($db,"UPDATE Points 
SET Points.Score=(SELECT Week_22.TP FROM Week_22 WHERE  
Week_22.Player=Points.Player) 
WHERE Position='Goalkeeper' AND Active='yes' AND Played='yes' 
OR Position='Goalkeeper' AND Active='no' AND Played='yes' 
OR Position='Goalkeeper' AND Active='no' AND Played='no' 
LIMIT 1 
"); 

我以为GROUP BY可能工作,但没有运气。所以我想不出如何扩大上述范围以适应表格中的每个领域和用户。

任何帮助,将不胜感激。

+3

删除'LIMIT 1' ... –

+0

没有运气......我改“活动” &表格中所有行的“已播放”栏位为“是”和“是”......并且以守门员作为位置的人被更新(比分栏)......所有这些都是。当每个用户只有一行(守门员)应该更新 – Tatters

回答

0

你需要在WHERE子句中添加括号以分开你的3个主要的“或”逻辑语句

$result = mysqli_query($db,"UPDATE Points 
SET Points.Score=(SELECT Week_22.TP FROM Week_22 WHERE  
Week_22.Player=Points.Player) 
WHERE (Position='Goalkeeper' AND Active='yes' AND Played='yes') 
OR (Position='Goalkeeper' AND Active='no' AND Played='yes') 
OR (Position='Goalkeeper' AND Active='no' AND Played='no') 
");