SELECT 分数,用户ID,名次=(SELECT COUNT(1) FROM 
((select max(分数)分数,用户ID from 表 GROUP BY  用户ID))A WHERE A.分数<=B.分数)
FROM(select max(分数)分数,用户ID from 表 GROUP BY  用户ID)B

解决方案 »

  1.   

    SELECT 分数,用户ID,名次=(SELECT COUNT(1) FROM 
    ((select max(分数)分数,用户ID from 表 GROUP BY  用户ID))A WHERE A.分数<=B.分数)
    FROM(select max(分数)分数,用户ID from 表 GROUP BY  用户ID)B
      

  2.   

    select top 1 分数,px as 排名
    from
    (
      select 
        *,
        px=(select count(1)+1 from tb where 分数>t.分数)
      from tb t
    ) tt
    where 用户ID='1'
    order by 分数 desc
      

  3.   

    SELECT * FROM TABLE1 ORDER BY 分数 desc 不久行了?
      

  4.   

    insert into #table1 select identify(int,1,1)  as 排名 ,* from 分数表 order by 分数 desc)
    select * from #table1 where  用户ID=‘1’; 
      

  5.   


    SELECT identity(int,1,1) as 排名,id,name,分数 into #table  from t1 order by id descselect * from #table where  用户ID='1'; 
      

  6.   


    --SQL 2005
    SELECT TOP 1 * FROM
    (
      SELECT [用户ID],[分数],Rank() Over (Order By [分数] DESC) AS RK FROM TB
    ) AS TB
    WHERE [用户ID]='1'