鉴于此表
id secId
1 2
2 2
3 2
4 1
5 3
6 3
我想添加一个新列“sortIndex”并将它的值初始化为每组相等secId的升序int值。 所以结果表是
id secId sortIndex
1 2 1
2 2 2
3 2 3
4 1 1
5 3 1
6 3 2
因此,对于每组相等的secId,我有一个新的序列“1,2,3,4,......” 如果有任何机会,单个查询就会很棒。
答案 0 :(得分:0)
您正在尝试在MySQL中模拟row_number。你需要使用变量。
SET @row_number:=0;
SET @sec_id:='';
SELECT id, @row_number:=CASE WHEN @secid=secid THEN @row_number+1 ELSE 1 END AS row_number,
@secid:=secid AS secid
FROM your_table
ORDER BY secid;
您可以在
找到更多详情答案 1 :(得分:0)
提供行号。
检查secId
,@curRow
与1
的增量是否相同。
<强>查询强>
select Id,secId,(
case secId
when @curA
then @curRow := @curRow + 1
else @curRow := 1 and @curA := secId end
) as sort_index
from your_table_name t,
(select @curRow := 0, @curA := '') r
order by Id,secId;