根据以前的select语句更新行

时间:2013-01-11 04:09:13

标签: mysql arrays select sql-update

我需要根据选择进行尽可能多的更新。

假设我有两个表“Groups”和“Members”。

“组”

GroupName  GroupID
Genius     1
Clever     2
Normal     3
Stupid     4
Donkey     5

“成员”

MemberName     GroupID
John           1
Peter          3
Mary           1
Ashley         2
Robin          1
Louis          5
Bill           4
Paul           5

我想将成员从GroupID更改为另一个。

I.e:从“聪明”到“驴”的成员。

select MemberName from Members where GroupID='1';
while($arr = mysqli_fetch_array($rs, MYSQLI_ASSOC))
{
$name = $arr['MemberName'];
}

然后我会将所有选定的成员更新为新组:

$sql .= update Members set GroupID='5' where MemberName='$name';

我知道我必须将所有名称都放入一个数组中,以便分别更新每个名称,但我也对正确的更新语法感到困惑。

2 个答案:

答案 0 :(得分:1)

为什么不简单

UPDATE Members SET GroupID=5 WHERE GroupID=1

只有在必须进行一些无法在SQL中完成的丑陋/复杂处理时(或者在SQL中甚至更加丑陋),才需要使用您的方法。

答案 1 :(得分:1)

您可以通过以下方式实现此目的:

SELECT  @DonkeyGrpID:=GroupID 
FROM Groups 
WHERE GroupName = 'Donkey';

UPDATE Members M, Groups G  
SET M.GroupID = @DonkeyGrpID
WHERE M.GroupID = G.GroupID AND G.GroupName = 'Clever' ;