如题,如何从一个表中查询最新的来自不同地区的四条记录

解决方案 »

  1.   

    就是一个表中的记录有region字段还有time字段,还有别的,我要从中查询时间最新的四条记录,但这四条记录要来自不同地区,可能按世界排序后前三条最新的都是来自一个地区(例如北京),但是只取第一条,然后再取别的地区的最新的,我举个例子北京 2010-01-11
    北京 2010-01-25
    北京 2010-02-01
    天津 2009-03-01
    天津 2009-03-02
    四川 2008-08-21
    山东 2007-01-01
    那我就取
    北京 2010-01-11
    天津 2009-03-01
    四川
    山东
            
      

  2.   

    按时间排序,再按地区分组,也就是你先order by time,再group by region
      

  3.   

    select region,time from (select row_number() over(partition by region order by time desc) x, region,time  from your_table) a  where x =1 
      

  4.   

    select t.region,t.time from (select region,max(time) as time from tbl group by region) t
    order by t.time limit....如果是oracle,需要使用rownum或者按楼上有位童鞋的使用row_number()分析函数!
      

  5.   

    db2 和 oracle下可以这样写:with t1 as
    (
    select '北京' as region,to_date('2010-01-11','yyyy-mm-dd') time from dual union all
    select '北京' as region,to_date('2010-01-25','yyyy-mm-dd') time from dual union all
    select '北京' as region,to_date('2010-02-01','yyyy-mm-dd') time from dual union all
    select '天津' as region,to_date('2009-03-01','yyyy-mm-dd') time from dual union all
    select '天津' as region,to_date('2009-03-02','yyyy-mm-dd') time from dual union all
    select '四川' as region,to_date('2008-08-21','yyyy-mm-dd') time from dual union all
    select '山东' as region,to_date('2007-01-01','yyyy-mm-dd') time from dual 
    )
    select region,time from (select row_number() over(partition by region order by time desc) x, region,time  from t1) a  where x =1
      

  6.   

    谢谢你啊。我用的是SQL SERVER  2005 ,我用一个sql语句没写出来,我就分开做的,先查询出该表中的所有的地区,再找出每个地区中时间最新的一条记录,然后又将这些记录排的序,我是接手了师姐做的东西,很多东西我不会,我刚刚读研
      

  7.   

    select  id,region,time from (select * from area order by time DESC) t group by region