1. select * from 表 t
   where 年龄 in(select distinct top 2 年龄 
                     from 表 
                         where 省份=t.省份 
                             order by 年龄 desc)2. delete t
   from 表 t
   where exists(select 1 
                   from 表 
                       where 重复字段=t.重复字段 
                             and 唯一字段<t.唯一字段)

解决方案 »

  1.   

    --试试这样
    1.
    SELECT 省份,MAX(姓名) 姓名,年龄 FROM 表 WHERE 省份+CONVERT(VARCHAR(20),年龄) IN( SELECT 省份+CONVERT(VARCHAR(20),MAX(年龄)) FROM 表 WHERE 省份+CONVERT(VARCHAR(20),年龄) NOT IN
    ( SELECT 省份+CONVERT(VARCHAR(20),MAX(年龄)) FROM 表 GROUP BY 省份) GROUP BY 省份 UNION  SELECT 省份+CONVERT(VARCHAR(20),MAX(年龄)) FROM 表 GROUP BY 省份 
    ) GROUP BY 省份,年龄
      

  2.   

    2.
    delete t where 唯一字段 not in(select max(唯一字段) from 表 group by 重复字段)
      

  3.   


    SELECT * INTO #1 FROM 表 WHERE 省份+CONVERT(VARCHAR(3),年龄) IN (SELECT 省份+CONVERT(VARCHAR(3),MAX(年龄))  FROM 表 GROUP BY 省份)INSERT #1 SELECT * FROM 表 WHERE 省份+CONVERT(VARCHAR(3),年龄) IN(SELECT 省份+CONVERT(VARCHAR(3),MAX(年龄)) FROM 表 WHERE 省份+CONVERT(VARCHAR(3),年龄) NOT IN(SELECT 省份+CONVERT(VARCHAR(3),年龄) FROM #1) GROUP BY 省份)SELECT * FROM #1 WHERE 唯一字段 IN(SELECT MAX(唯一字段) FROM #1 GROUP BY 省份,年龄)还慢的话可以在年龄字段加个索引