在数据库的一个表[table1]中三个字段
id  姓名 日期
1   sa  2005
2   aa  2006
3   sa  2006
4   bb  2006
这两个字段中有很多数据,现在我求一个更新语句把姓名为sa的最后一条记录的日期更新为2007。
而前面的不要更新。
在上面的例子,就是更新第三条,第一条不要更新。注意:上面仅仅是例子,所以字段为中文。

解决方案 »

  1.   

    Oracle数据库在Sql Plus里如下操作:
    var temp number(3);
    begin 
    select max(id) into temp from table1 where 姓名='sa';
    update table table1 set 日期='2007' where id=temp;
    end;
      

  2.   

    如果id是自动增长的话
    declare @id int
    select top 1 @id=id from [table1] where 姓名='sa' order by id desc 
    update Table1 set 日期='2007' where id=@id
      

  3.   

    SQL server 2000:
    update [table1] set 日期='2007' where id=(select top 1 id from [table1]  order by id Desc)
      

  4.   

    上面错了,还差一个条件:
    update [table1] set 日期='2007' where id=(select top 1 id from [table1]  order by id Desc where 姓名='sa')
      

  5.   

    赶出来的东西就是不好(老婆叫吃饭,上面又错了,应该是:
    update [table1] set 日期='2007' where id=(select top 1 id from [table1] where 姓名='sa' order by id Desc )
      

  6.   

    update table1 set 日期='2007' where id=(select top 1 id from table1 where 姓名='sa' order by id desc)
      

  7.   

    update table1 set 日期='2007' where [id]=(select max([id]) from table1 where 姓名='sa')