MySQL简单行数增量计数器

标签 mysql sql random row-number

我正在尝试在 SQL select 子句中生成增量计数器(下面查询中的“rownum”列)。每次新用户切换时,计数器都应重新开始。

    SELECT * FROM (
    SELECT CONCAT('    ',g.node1,'    ',g.node2),
    @r:= CASE WHEN @g = g.`user` THEN @r +1 ELSE 1 END rownum,
    @g:= g.`user` user_group
    FROM sn.sn_graph_reduced g
    CROSS JOIN (SELECT @g:=0,@r:=0) t2
    ORDER BY `user` , RAND() 
    ) t
    WHERE rownum <= 100 

但是,上面的代码片段返回行号,并且由于记录是随机采样的,所以行号不是递增的。 我需要的是为每一行返回的简单计数器 (1,2,3....)。 谢谢

最佳答案

尝试将变量放在内联 View 之外:

SELECT t.*,
       @r:= CASE WHEN @t = t.`user` THEN @r +1 ELSE 1 END rownum,
       @t:= t.`user` user_group
FROM    (
        SELECT CONCAT('    ',g.node1,'    ',g.node2), g.`user`
        FROM sn.sn_graph_reduced g
        ORDER BY `user` , RAND()
        ) t
CROSS JOIN (SELECT @t:=0,@r:=0) t2
where rownum <= 100

关于MySQL简单行数增量计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25561419/

相关文章:

php - 产品具有属性(变体)数据库设计?

php - 我的数据库无法使用 RSA 加密

java - 如何使用selenium webdriver删除mysql中的现有数据

sql - 使用sql删除尾随零

python - 在 python 中,如何区分人类可读的单词和随机字符串?

python - 在集合中查找可用的 "spots"

mysql - rails : implement auditing of table insertions/updates

java - 从另一个表创建一个 mysql 表

php - 获取没有信息模式的 FTS 索引名称

Python sklearn RandomForestClassifier 不可重现的结果