比较两张表,恢复出来得表中没有的当然就是今天的纪录了,然后再将这些纪录set日期为今天的不就行了?

解决方案 »

  1.   

    比如:不包含当日数据的表示A表,包含当日数据的表是B表
    UPDATE B SET 日期=今天 FROM A,B WHERE B.B1 NOT IN (SELECT A1 FROM A)
      

  2.   

    我想用不包含当日数据的A表(它的日期是对的),更新包含当日数据的B表(它的日期是错的),这一句如何写?
    UPDATE B SET 日期=A.日期 FROM A,B WHERE ....
      

  3.   

    你的表有没有主见,或者实际上是唯一的字段或者字段组合?如果有,假设未id,则:UPDATE B SET 日期=A.日期 
    FROM A,B WHERE a.id=b.id不过如果是我,我会倒过来做:insert a
    select * from b
    where not exists (select * from a
    WHERE id=b.id
    )再 exec rename 来修改表名。
      

  4.   

    update b set 日期=(select A.日期 from A where b.id = A.id)
       from B where b.id in (select A.id from A)
    注:id列表示主键再加上春城的语句
      

  5.   

    TO Yang_(扬帆破浪) (  
    没有主键!
    临时增加一个行不行?
    如不行语句咋写?急!!!
      

  6.   

    没有主键!
    只要是实际上唯一的字段就可以字段组合也可以,但语句要变成:UPDATE B SET 日期=A.日期 
    FROM A,B 
    WHERE a.X=b.X
    AND A.Y=B.Y
    AND A.Z=B.Z
    OR:insert a
    select * from b
    where not exists (select * from a
    WHERE X=b.X
    AND Y=B.Y
    AND Z=B.Z

      

  7.   

    这几天没有上网,我当时试了一下,发现这个表可能有重复的记录,
    我只好加了一个ID字段(自动增量)用上面的方法可以成功,但加这个ID,两个表可能不会一一对应?我想问,我从备份中恢复出来的表和正在用的表,其记录的物理顺序是不是一样呢?
      

  8.   

    后加的很危险,不能保证.
    你可以包括除日期外的所有字段:UPDATE B SET 日期=A.日期 
    FROM A,B 
    WHERE a.X=b.X
    AND A.Y=B.Y
    AND A.Z=B.Z
    ...
    AND A.LASTCOL=B.LASTCOL