好久没来了,散点技术分,问个SQL问题:如果快速获取当前排名?

wapit 2010-04-30 12:55:51
表结构:
ID,Tickets,其它字段(ID为标识列)

数据示例:
1,10,...
2,15,...
3,12,...

现在我取到了一行记录,如果快速获取这行记录在表中以Tickets倒序排列时的排名? 即当我取到ID为3的记录时,我怎么知道它是排在第2位?
...全文
257 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
wiki14 2010-04-30
  • 打赏
  • 举报
回复
rownum~


临时表,

select ID=identity(int,1,1),* into #t from table1

select ID from #t where 条件
pejaKang 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 imsasuke 的回复:]
我是板凳,我要很多分,我是充着200来的。
[/Quote]
Up
Comeonzhou 2010-04-30
  • 打赏
  • 举报
回复
帮顶 学习来着//
lihuinihao6315 2010-04-30
  • 打赏
  • 举报
回复
笨方法 查询两次, int变量 记录循环次数。
bianjijianjie 2010-04-30
  • 打赏
  • 举报
回复
我是板凳,我要很多分,我是充着200来的。
frankbooth 2010-04-30
  • 打赏
  • 举报
回复
顶起……
fangyuantdy 2010-04-30
  • 打赏
  • 举报
回复
2005的话有个RowNum,其他不知。。
bianjijianjie 2010-04-30
  • 打赏
  • 举报
回复
排名。。。。。。。。。
wiki14 2010-04-30
  • 打赏
  • 举报
回复
沙发~
liji2009 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 xrongzhen 的回复:]
SQL code

if exists (select * from dbo.sysobjects where id = object_id('tb'))
drop table tb
go

Create table tb (ID int,Tickets int)
insert into tb
select 1,10 union all
select 2,15 union all……
[/Quote]

顶起来
wuyi8808 2010-04-30
  • 打赏
  • 举报
回复
恐怕要自连接.
wapit 2010-04-30
  • 打赏
  • 举报
回复
喔,一下收集了这么多回复……非常感谢!
结贴了再慢慢研究试验。
谢谢各位!
zekelove 2010-04-30
  • 打赏
  • 举报
回复
查询行的索引值~
天下在我心 2010-04-30
  • 打赏
  • 举报
回复
我是来接分的
xrongzhen 2010-04-30
  • 打赏
  • 举报
回复

if exists (select * from dbo.sysobjects where id = object_id('tb'))
drop table tb
go

Create table tb (ID int,Tickets int)
insert into tb
select 1,10 union all
select 2,15 union all
select 3,12 union all
select 4,12 union all
select 5,13
go

SELECT *,排序=RANK() OVER (ORDER BY Tickets DESC)
FROM Tb
/* 执行结果
ID Tickets 排序
----------- ----------- --------------------
2 15 1
5 13 2
3 12 3
4 12 3
1 10 5
*/
disciple_wr 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 wuyq11 的回复:]

SELECT *,RANK() OVER (ORDER BY Tickets DESC)
FROM Tb
[/Quote]

恩 测试结果
--------------
1 10 1
3 12 2
5 12 2
4 14 4
2 15 5
zhulong1111 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wiki14 的回复:]
rownum~


临时表,

select ID=identity(int,1,1),* into #t from table1

select ID from #t where 条件
[/Quote]up
q107770540 2010-04-30
  • 打赏
  • 举报
回复
jf....
wang5225 2010-04-30
  • 打赏
  • 举报
回复

欢喜的接分
pt1314917 2010-04-30
  • 打赏
  • 举报
回复

--or:
--> 测试数据: tb
if object_id('tb') is not null drop table tb
create table tb (ID int,Tickets int)
insert into tb
select 1,10 union all
select 2,15 union all
select 3,12 union all
select 4,12
go

declare @id int
set @Id=3
select * from
(select *,排名=DENSE_RANK() over(order by tickets desc) from tb)a where id=@id


加载更多回复(16)

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧