create table test_csdn(
       c1 varchar2(32),
       c2 varchar2(32),
       c3 date
);
insert into test_csdn
values('a','aa',to_date('2013-01-02','yyyy-mm-dd'));
insert into test_csdn
values('b','bb',to_date('2013-10-12','yyyy-mm-dd'));
insert into test_csdn
values('e','ee',to_date('2013-10-29','yyyy-mm-dd'));update test_csdn set c1 = 'd',c2 = 'dd'
where months_between(sysdate,c3) in (
      select min(months_between(sysdate,c3)) 
      from test_csdn
);

解决方案 »

  1.   

    是不是每天只有一条数据 ?如果日期相同 要根据什么再排序?如果只是一天一条的话 直接查询最大的就行了update tb
    set c2 = ''
    where c3 = (select max(c3) from tb1)
      

  2.   

    UPDATE TABVISITORRECORD SET RECORDENDTIME = SYSDATE WHERE RECORDSTARTTIME = (SELECT Max(RECORDSTARTTIME) FROM TABVISITORRECORD WHERE RECORDICN = '150111111111111')这条语句在Oracle里能够正常执行,为什么用OracleHelper.ExecuteNonQuery(CommandType.Text,strSql);一执行,程序就死掉了呢?
      

  3.   

    select * from  table where rownum <= 1  order by  date desc
      

  4.   

    select * from  table where rownum <= 1  order by  date desc
    同意楼上
      

  5.   

    应该是select * from (select * from  table  order by  date desc) where rownum <= 1 
      

  6.   

    饿,直接取时间最大的一条记录做修改不就行了where c3=(select max(c3) from table);
      

  7.   

    where c3=(select c3 from table where rownum<=1 order by c3 desc); 
      

  8.   

    where rowid=(select rowid from table where rownum<=1 order by c3 desc)
      

  9.   

    sysdate-c3 去绝对值,找出绝对值最小记录,修改之