基于具有重复值的列以+1增量更新列

时间:2013-04-01 21:50:49

标签: php mysql

我有一个包含3列的mysql表(itemidaltidcounter

我很难在每一行循环,根据重复counter的数量来更新itemid列。

我想要完成的例子:

itemid | altid | counter
1        30      1
1        31      2
1        37      3
5        53      1
5        54      2
6        112     1
6        113     2
6        114     3
6        115     4

请注意itemid重复的位置,counter正在递增+1。

该列表大约有2500行。我的counter列为空。我在php中更新while循环中的增量没有运气,因为我不知道如何检测该重复值(或检查以前的值)。

这就是我现在所拥有的(不起作用):

$query = mysql_query("SELECT * FROM table") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)){
$itemid = $row['itemid'];
$i=1;
    if($row['itemid']!=$itemid){
    $i=1;
    }
$id = $row['id'];
$query = mysql_query("UPDATE table SET counter='$i' WHERE id=$id") or die(mysql_error());
$i++;
}

我搜索过,并没有找到太多帮助实现这一目标。任何帮助,或推进正确的方向将非常感谢!

2 个答案:

答案 0 :(得分:5)

试试这个MySQL:

SET @pos=0, @last=0;
UPDATE `table` SET `counter`=(
    @pos:=if(
        @last=`itemid`,
        @pos+1,
        (@last:=`itemid`) and 1
    )
) ORDER BY `itemid` ASC;

答案 1 :(得分:0)

特别针对此命令(仅在MySQL中):INSERT ... ON DUPLICATE KEY UPDATE