我有一个有3列的表
该表如下所示。
Vid Video_id a_id
101 1 3
102 1 3
103 5 3
104 5 3
105 5 3
106 11 3
107 11 3
108 11 3
109 11 3
110 11 3
我想根据video_id值更新a_id列值。 a_id中的值应更新如下.ex:如果video_id中有5个11位,则a_id中的值应更新为1到5.
Vid Video_id a_id
101 1 1
102 1 2
103 5 1
104 5 2
105 5 3
106 11 1
107 11 2
108 11 3
109 11 4
110 11 5
答案 0 :(得分:6)
您可以使用用户定义的变量为每个视频组提供排名,然后通过自动增量列与真实表联接并相应地更新a_id
update t
join (
SELECT
Vid,
@r:= CASE WHEN Video_id = @g THEN @r+1 ELSE @r:=1 END a_id
,@g:=Video_id
FROM t,(SELECT @r:=0,@g:=0) t1
ORDER BY Video_id
) t1
on(t.Vid =t1.Vid)
set t.a_id = t1.a_id