有表table_x,字段A有重复值:
现在想通过select查询返回示例图的这样的结果,统计对应字段A的值第几次重复出现。理想效果如图:
目的是为了添加标签,首次出现标注‘首次’,之后均标注‘再次’,同时也想展示该条记录第几次出现。
请问如何实现?非常谢谢!
有表table_x,字段A有重复值:
现在想通过select查询返回示例图的这样的结果,统计对应字段A的值第几次重复出现。理想效果如图:
目的是为了添加标签,首次出现标注‘首次’,之后均标注‘再次’,同时也想展示该条记录第几次出现。
请问如何实现?非常谢谢!
能简单介绍下你的应用场景么?因为就此问题,解决方法从不同角度有很多样
根据你的描述,我建议你使用redis,其实就是实现一个计数器功能(比如大型网站的点赞功能,文章ID就是你的A,点赞次数就是你的B)
用INCR命令,命令说明见http://redisdoc.com/string/in...INCR A
,其中A就是redis的key,也就是你表中的字段A
Redis Incr 命令将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
示例:
127.0.0.1:6379> set num 10
OK
127.0.0.1:6379> incr num
(integer) 11
127.0.0.1:6379> get num # 数字值在 Redis 中以字符串的形式保存
"11"
我们有一个web应用,我们想记录每个用户每天访问这个网站的次数。
web应用只需要通过拼接用户id和代表当前时间的字符串作为key,每次用户访问这个页面的时候对这个key执行一下incr命令。
select A,max(B) from table_x group by A, 获取每个A的最大B
直接获取每个A的最大B不就好了,B=1表示首次,B>1肯定不是首次 ? 是这个逻辑么
select A.id,A.xmmc,count(distinct A1.id) cnt from A left join A1 on A.id<=A1.id and A.xmmc=A1.xmmc group by A.id
这种写法执行效率会更高,也容易理解内在逻辑关系,同时当需要对次数进行分类整理时,case when写起来也比较简单。
5 回答3.3k 阅读✓ 已解决
3 回答3.7k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
5 回答1.4k 阅读
2 回答2.1k 阅读
你好,我也是和你碰到差不多情况,我摸索出来了,我将方法告诉你希望能帮助到你
表结构,A表有一个id自增长类型的(必须有一个肯定不同的字段)
语句执行出来的结果是这样的
select A.id,A.xmmc,(select count(*) as num from 表A where id<=A.id and A.xmmc = xmmc) as 次数 from 表A A