作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据表,它有一个数字指示符,它不是 ID 或外键。这个数字在表中重复了几次。
我需要打印所有包含相同指标值内的增量行号
的行,所以 1 有 2 次,2 有 3 次,3 有 1 次。
期望的输出:
name | indicator | rownumber
a 1 1
b 1 2
c 2 1
d 2 2
e 2 3
f 3 1
我找到了 this计算行数的解决方案,但我不知道如何在指示器更改时重置计数器。
到目前为止我的查询是,但这是增量计算行数
SELECT name, indicator,
@rownum := @rownum + 1 as row_number
FROM rownumtable
CROSS JOIN (SELECT @rownum := 0) r
ORDER BY name ASC
但它会打印行号 - 请参阅 SQL Fiddle
name | indicator | row_number
a 1 1
b 1 2
c 2 3
d 2 4
e 2 5
f 3 6
有没有办法为 MySQL 查询中的特定组相同值重置 row_number 计数器?
最佳答案
SELECT name, indicator,
@rownum := case when @prevIndicator <> indicator then 1 else @rownum + 1 end as rownumber,
@prevIndicator := indicator
FROM rownumtable
CROSS JOIN (SELECT @rownum := 0, @prevIndicator := 0) r
ORDER BY name ASC
关于mysql - 如何在一个 SELECT 中计算不同组值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47990607/
我是一名优秀的程序员,十分优秀!