我有一个包含3列的mysql表(itemid
,altid
,counter
)
我很难在每一行循环,根据重复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++;
}
我搜索过,并没有找到太多帮助实现这一目标。任何帮助,或推进正确的方向将非常感谢!
答案 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