现在有这样一张表user,字段为id,name,number.想要实现这样的效果,以number排序,查询某个id所在的数据排在第几位,假如这个数据有几个相同的,那么取它为最低排名.
例如有这么几行: id name number
1 A 10
2 B 20
3 C 10
4 D 5
-> from tbl
例如有这么几行: 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)
-> from tbl
-> order by col;
亲测 可用需要设置下@x =0 否则输出的数据要--1