MySQL查询结果另外自带一列自增序列号

如果一个需求要求查询的结果集有一列自增序列号MySQL要怎么实现?

name    name1   name2   score

张三 理科 数学 50
张三 理科 数学  60
李四 理科 数学  70
张三 理科 物理  70
李四 文科 数学  80
张三 理科 化学  80
张三 文科 数学  90

方法一:

SELECT (SELECT COUNT(1) FROM ss WHERE score<=a.score) as seq,`name`,score  FROM ss a

结果:(seq 顺序不对!是因为score不是唯一的字段,此方法条件仅于含唯一标识字段)

seq   name    score

1 张三 50
2 张三 60
4 李四 70
4 张三 70
6 李四 80
6 张三 80
7 张三 90


方法二:

SET @rownum =0;
SELECT *,@rownum := @rownum +1 as seq from ss;

一起执行!

或者:select   ss.* ,(@i:=@i+1)   as  seq  from   ss,(select   @i:=0)   as   it 也可以达到通用效果

id    name  name 1   name 2  score  seq

1 张三 理科 数学 50 1
2 张三 理科 数学 60 2
3 李四 理科 数学 70 3
4 张三 理科 物理 70 4
5 李四 文科 数学 80 5
6 张三 理科 化学 80 6
7 张三 文科 数学 90 7



附带一个网上查的sql的用法,好像比较强大:

给查询出的SQL记录添加序号列,解决方法有以下两种

第一:

  select ROW_NUMBER() OVER (ORDER BY a.字段 ASC) AS XUHAO,a.* from table a

(table 为表名,字段为表a中的字段名)

第二:

 select RANK()  OVER (ORDER BY a. 字段  ASC) AS XUHAO,a.* from  table  a

(table 为表名,字段为表a中的字段名)

出处:http://blog.csdn.NET/xsfqh/article/details/6663895


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值