急,用sql根据姓名查询排名
急,请各位高手帮忙解决一下。
110 爱疯1 90 2013-06-14 12:59:47.167 1 0
111 爱疯2 80 2013-06-14 12:59:47.183 1 0
112 爱疯3 70 2013-06-14 12:59:47.183 1 0
113 爱疯4 60 2013-06-14 12:59:47.183 1 0
114 爱疯5 91 2013-06-14 12:59:47.183 1 1
115 爱疯6 92 2013-06-14 12:59:47.187 1 1
116 爱疯7 85 2013-06-14 12:59:47.187 1 0
117 爱疯8 64 2013-06-14 12:59:47.187 1 0
118 爱疯9 63 2013-06-14 12:59:47.190 1 0
119 爱疯0 65 2013-06-14 12:59:47.190 1 0
120 爱疯14 85 2013-06-14 13:05:44.160 1 0
121 爱疯13 64 2013-06-14 13:05:44.160 1 0
123 爱疯12 63 2013-06-14 13:05:44.163 1 0
124 爱疯11 65 2013-06-14 13:05:44.163 1 0
这是我数据库数据
SELECT id,userId, userName,intTime,TotalTime,counts,states, DENSE_RANK() OVER (ORDER BY intTime) AS [rank1] FROM users where states=0 ORDER BY intTime
4 113 爱疯4 60 2013-06-14 12:59:47.183 1 0 1
9 118 爱疯9 63 2013-06-14 12:59:47.190 1 0 2
13 123 爱疯12 63 2013-06-14 13:05:44.163 1 0 2
12 121 爱疯13 64 2013-06-14 13:05:44.160 1 0 3
8 117 爱疯8 64 2013-06-14 12:59:47.187 1 0 3
10 119 爱疯0 65 2013-06-14 12:59:47.190 1 0 4
14 124 爱疯11 65 2013-06-14 13:05:44.163 1 0 4
3 112 爱疯3 70 2013-06-14 12:59:47.183 1 0 5
2 111 爱疯2 80 2013-06-14 12:59:47.183 1 0 6
7 116 爱疯7 85 2013-06-14 12:59:47.187 1 0 7
11 120 爱疯14 85 2013-06-14 13:05:44.160 1 0 7
1 110 爱疯1 90 2013-06-14 12:59:47.167 1 0 8 这是我按sql语句排名查询后的数据。
我想请问怎么实现按姓名或者是id查询他的排名怎么实现?
比如说我要查询id=1的排名,那么查询出来的排名结果应该是8,也就是我标注颜色的拿一条数 据
------解决方案-------------------- 可以将你的查询结果做一个SUBQUERY, 然后使用WHERE FILTER
------解决方案-------------------- select replace(userId,'爱疯','') as id
where replace(userId,'爱疯','')='1' ------解决方案-------------------- 把SELECT id,userId, userName,intTime,TotalTime,counts,states, DENSE_RANK() OVER (ORDER BY intTime) AS [rank1] FROM users where states=0 ORDER BY intTime
这个当成中间表,从中间表不是可以查询吗
------解决方案-------------------- 引用: 没有懂你们的意思,请详细一点!谢谢!
select [rank1] from
(
SELECT id,userId, userName,intTime,TotalTime,counts,states,
DENSE_RANK() OVER (ORDER BY intTime) AS [rank1] FROM users where states=0
) T where id = 1