mysql示例
SELECT
case when @currentid <> t.id then @rownum :=1 else @rownum :=@rownum + 1 end AS row_num,
case when @currentid <> t.id then @currentid := t.id else @currentid end AS row_num,
ID,
FROM
table t,
(SELECT @rownum := 0) r,
(SELECT @currentid := '') c
ORDER BY
t.id,
t.name DESC
mysql中没有row_number() over,可以使用曲线救国的方法来解决。
1、我们先按要分组的字段排序(id)。
2、我们定义两个变量一个@rownum作为行号,@currentid作为分组号。
3、case 分组号和当前的要分组的字段比较。
4、上面的两个case的位置不能变,否者就会失效
oracle示例
SELECT
ROW_NUMBER() OVER(
PARTITION BY id
ORDER BY
id DESC
) AS ROWNUM,
t.id
FROM
table t
标签:currentid,行号,分组,mysql,rownum,id,SELECT
From: https://www.cnblogs.com/jingyu-zhang/p/18205759