就是想取得分组后表中第二大的id  例如:id   fzu
         
         5    1
         6    1
         7    2
         8    2
         9    2
取得第大id:
SELECT MAX(id)  FROM table1
WHERE   GROUP BY fzu
现在我想取得第二大怎么办?

解决方案 »

  1.   

    select min(id)  from tb where id in(select top 2 id from tb 
    order by id desc)
      

  2.   


    [code=SQL]
     CREATE TABLE  WT
    (
    id int,
    fzu  int
    )
    INSERT INTO WT
    SELECT 5,1 UNION ALL 
    SELECT 6,1 UNION ALL 
    SELECT 7,2 UNION ALL 
    SELECT 8,2 UNION ALL 
    SELECT 9,2 select t.* from 
    (
    select max(id) id,fzu,row_number() over(order by fzu desc) as num from WT group by fzu 
    ) t
     where t.num=2 id          fzu         num
    ----------- ----------- --------------------
    6           1           2(1 行受影响)[/code]
      

  3.   

    SELECT  TOP (1) id FROM                    
    (SELECT TOP (2) id FROM table1
      ORDER BY id DESC) AS temTable order by id asc
    这种写法可以去到范围的数据
      

  4.   


        SELECT MAX(id) as id,fzu FROM (SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM (SELECT MAX(id) as id,fzu FROM table1 GROUP BY fzu) AS T)) AS D GROUP BY fzu  
      

  5.   


     
    SELECT TOP 1 * FROM tb WHERE IN (SELECT TOP 2 ID FROM tb GROUP BY ID ORDER BY ID DESC) 
    ORDER BY ASC 或
    用 row_Number () grouping 函数。
      

  6.   

    select max(id) from tb 
    where id not in(select max(id) from tb group by fzu )
    group by fzu