with t as
 (select 1 id, 1 value
    from dual
  union all
  select 1 id, 2 value
    from dual
  union all
  select 2 id, 1 value
    from dual
  union all
  select 2 id, 3 value
    from dual
  union all
  select 2 id, 2 value from dual)
select t1.id, t1.value
  from (select t.*,
               row_number() over(partition by id order by value desc) rn
          from t) t1
 where t1.rn = 1;

解决方案 »

  1.   

    SELECT id,max(VALUE)
      FROM 表名
     GROUP BY id;
      

  2.   

    over partition by 
    这个很经典
      

  3.   

    和我前两天解决的问题差不多,http://bbs.csdn.net/topics/390718983。比那个简单了点,select id,max(value) from bb group by id;
      

  4.   

    你这是删除重复的数据只保留value最大的一条,可以用SELECT id,max(VALUE)FROM 表名 GROUP BY id; 
      

  5.   

    也可以用这条语句
    delete from 表名 
    where   ID in (select  ID   from 表名  group by ID   having count(ID) > 1) 
    and   value not in (select min(value) from 表名 group by ID   having count(ID)>1)