id   name  datetime
1    a     2010-05-13 10:15:00
2    b     2010-05-14 09:10:00
3    d     2010-05-14 10:10:00如何将距离目前最近的那个记录的name 更新为“x”呢谢谢咯 啊   呵呵

解决方案 »

  1.   

    update  table_name set name='x' where datetime in  (select max(datetime) as datetime from table_name)
      

  2.   

    对 应该就这样的 不过如果数据量大的话可以用exists
    update table_name a set name='x' where exists (
     select 1 from (
      select max(datetime) from table_name
     ) b where b.datetime=a.datetime
    );
      

  3.   

    update tble set name='x' where not exists (select 1 from tbl b where b.ttime<tble.ttime);
      

  4.   

    好像不行哦  出现这样的错误哦    #1093 - You can't specify target table 'te_log' for update in FROM clause 
      

  5.   

    MYSQL数据库不支持吧。
    错误提示就是说,不能先select出同一表中的某些值,再update这个表(在同一语句中) 思路,create table_name as select max(datetime) as datetime from table_name
    然后update table_name set name='x' where datetime in 上面那个表;
    然后drop那个表试试
      

  6.   

    update 表 set name='x' 
    where (sysdate-datetime) = ( 
    select min(sysdate-datetime) from 
    表 )
    oracle中测试成功,mysql中现在的时间是不是sysdate我就不大清楚了
      

  7.   

    真不支持。sorry。
    mysql> select * from tbl;
    +------+------+---------------------+
    | id   | name | ttime               |
    +------+------+---------------------+
    |    1 | a    | 2010-05-14 11:08:00 |
    |    2 | b    | 2010-05-14 11:08:43 |
    |    3 | d    | 2010-05-14 11:08:47 |
    +------+------+---------------------+
    3 rows in set (0.00 sec)mysql> update tbl set name='x' where not exists(select 1 from tbl b where b.ttime < tbl.ttime);
    ERROR 1093 (HY000): You can't specify target table 'tbl' for update in FROM clause