取到排序后(从大到小)第二个数据
在一个排序后的表中如何取到第二个数据,如下: 
 tb(col1   char(2),col2   int) 
 col1                  col2 
 a1                              15 
 a1                              14 
 a1                              13 
 a1                              11 
 a1                                 9 
 a2                                 22 
 a2                                 20 
 a2                                 10 
 a2                                 5 
 ... 
 想通过sql得到 
 col1                     col2 
 a1                              14 
 a2                              20 
 ... 
 如果想得到第三.....请问如何得到?
------解决方案--------------------select col1,col2 
 from 
 ( 
 select col1,col2, 
         tmp_id=(select count(*) from tb where col1=a.col1 and col2> =a.col2) 
 from tb a 
 ) T 
 where tmp_id=2
------解决方案--------------------create table tb(col1 char(2),col2 int) 
 insert into tb 
 select  'a1 ',15 
 union all select  'a1 ',14 
 union all select  'a1 ',13 
 union all select  'a1 ',11 
 union all select  'a1 ', 9 
 union all select  'a2 ', 22 
 union all select  'a2 ', 20 
 union all select  'a2 ', 10 
 union all select  'a2 ', 5   
 select * from tb a 
 where col2 in (select top 1 col2 from (select top 2 col2 from tb b where a.col1=b.col1 order by col2 desc)t order by col2) 
 /* 
 col1 col2         
 ---- -----------  
 a1   14 
 a2   20   
 (所影响的行数为 2 行) 
 */
------解决方案--------------------select * from tb a 
 where col2 in (select top 1 col2 from (select distinct top 2 col2 from tb b where a.col1=b.col1 order by col2 desc)t order by col2)