mysql 中排序问题

现在有这样一张表user,字段为id,name,number.想要实现这样的效果,以number排序,查询某个id所在的数据排在第几位,假如这个数据有几个相同的,那么取它为最低排名.

例如有这么几行:    id   name   number

                          1      A         10  

                          2      B         20   

                          3      C         10 

                          4      D          5

现在查询id为3的数据,它可以排名第2或者第3,那么一定要让它取第3这种情况.


建立实验环境如下
mysql> create table tbl (
    ->  id      int primary key,
    ->  col     int
    -> );
Query OK, 0 rows affected (0.08 sec)

mysql> insert into tbl values
    -> (1,26),
    -> (2,46),
    -> (3,35),
    -> (4,68),
    -> (5,93),
    -> (6,92);
Query OK, 6 rows affected (0.05 sec)
Records: 6  Duplicates: 0  Warnings: 0

mysql>
mysql> select * from tbl order by col;
+----+------+
| id | col  |
+----+------+
|  1 |   26 |
|  3 |   35 |
|  2 |   46 |
|  4 |   68 |
|  6 |   92 |
|  5 |   93 |
+----+------+
6 rows in set (0.00 sec)

mysql> select @x:=ifnull(@x,0)+1 as rownum,id,col
    -> from tbl

    -> order by col;



亲测 可用需要设置下@x =0  否则输出的数据要--1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值