name    date    add     Amount     id
姓名    日期    地址    金额    编号   籍贯   生日张三    2009    海淀    100     aid
张三    2008    海淀    300     ijr
李四    2003    朝阳    200     due
李四    2007    朝阳    200     die
王五    2003    昌平    400     urw
刘六    2007    朝阳    200     dud把std表中相同姓名地址人的编号,更新成日期最早的编号;

解决方案 »

  1.   

    一张表, 
    编号字段名id编号字段值  
    aid
    ijr
    due
    die
    urw
    dud
      

  2.   

    比如
    张三    2009    海淀    100    aid
    张三    2008    海淀    300    ijr 
    更新成
    张三    2009    海淀    100    ijr
    张三    2008    海淀    300    ijr 
      

  3.   

    UPDATE 
      std,
      (SELECT 
         姓名,
         地址,
         编号 
       FROM 
         std a 
       WHERE 
         NOT EXISTS(SELECT * FROM std WHERE 姓名=a.姓名 AND 地址=a.地址 AND 日期>a.日期 )
       ) t
    SET 
      std.编号=t.编号
    WHERE
      std.姓名=t.姓名 AND std.地址=t.地址
      

  4.   

    update tth3 a1,
    (select a.* from tth3 a 
    inner join
    (select name,min(date) as mi from tth3 group by name) b
    on a.name=b.name and a.date=b.mi) as c1
    set a1.id=c1.id
    where a1.`name`=c1.`name` and a1.`date`=c1.`date`
      

  5.   

    update tth3 a1,
    (select a.* from tth3 a
    inner join
    (select name,min(date) as mi from tth3 group by name) b
    on a.name=b.name and a.date=b.mi) as c1
    set a1.id=c1.id
    where a1.`name`=c1.`name` 
      

  6.   

    orupdate tth3 a1 inner join
    (select a.* from tth3 a
    inner join
    (select name,min(date) as mi from tth3 group by name) b
    on a.name=b.name and a.date=b.mi) as c1
    on a1.`name`=c1.`name` 
    set a1.id=c1.id