环境:oracle 9i
表名:tablename                         time mike                         20100209-00:10:01:123
mike                         20100209-00:02:01:234
mike                         20100208-09:02:05:564
想得到结果:name                         time mike                         20100209-00:10:01:123请教各位 查询语句应该如何写?

解决方案 »

  1.   


    SELECT NAME,TIME 
    FROM table 
    WHERE (NAME,TIME) EXISTS
    (SELECT NAME,MAX(TIME) FROM table GROUP BY NAME) 
      

  2.   

    select name,max(time) from table group by name
      

  3.   

    select name,time from 
       (select row_number () over ( partition by name order by time desc) rn,t.name,t.time from table t)
    where rn=1;
      

  4.   

    select name,time from 
      (select row_number () over ( partition by name order by time desc) rn,t.name,t.time from table t) 
    where rn=1;
      

  5.   

    SELECT NAME,TIME 
    FROM table 
    WHERE (NAME,TIME) IN
    (SELECT NAME,MAX(TIME) FROM table GROUP BY NAME)
    不是EXISTS 是IN ,错 了,上面的
      

  6.   

    select * from table1 t
    where not exists(
      select 1 from table1 where name=t.name and time>t.time)
      

  7.   


    with tab as
    (
    select 'mike' name,
           to_date('20100209 - 00:10:01', 'yyyyMMdd hh24:mi:ss') ttime
      from dual
    union all
    select 'mike' name,
           to_date('20100209 - 00:02:01', 'yyyyMMdd hh24:mi:ss') ttime
      from dual
    union all
    select 'mike' name,
           to_date('20100208 - 09:02:05', 'yyyyMMdd hh24:mi:ss') ttime
      from dual
    )
    select name, max(ttime) from tab group by name
      

  8.   

    select name,max(time) from table where name='mike' group by name