如何对比两表后----------按时间更新同步?

雄牛 2017-03-13 09:10:21
是这样,有两个表,一个表A,一个表B.
表结构相同,都如下:

ID(自增) Remark updateTime
----------- ------------ --------------------
1 123123 2017-3-13 10:50:00
2 123123 2017-3-11 10:11:00
....


我想求一个SQL,
这两个表,当ID相同时,按最新的updateTime为准,把那个表的Remark数据更新到另一个表中去?
这个该怎么写?路过的帮看下,谢谢....
...全文
264 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gw6328 2017-03-20
  • 打赏
  • 举报
回复
你的要求就是更新remark.如果你要更新时间加一列就可以了啊。
雄牛 2017-03-19
  • 打赏
  • 举报
回复
你好,代码可以执行,但是没有按日期来,而且全部执行过去了,我试了调还是全部更新了 我的数据放在两个不同的数据库实例中,但结构是一样的. --数据表结构 CREATE TABLE [dbo].[Area]( [GUID] [int] IDENTITY(1,1) NOT NULL, [AreaName] [nvarchar](50) NOT NULL, [UperlerdAreaID] [int] NOT NULL, [SiteID] [int] NOT NULL, [UpdateTime] [datetime] NOT NULL, CONSTRAINT [PK_Area_1] PRIMARY KEY CLUSTERED ( [GUID] ASC, [SiteID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] --数据样式 2 一楼 0 22 2017-03-13 10:06:00.163 4 二楼 0 22 2017-01-11 16:50:35.000 5 三楼 0 22 2017-03-12 23:04:16.050 要以最新日期为准,去更新另一个表, 表用了双主键的 SET IDENTITY_INSERT Area ON //设置可进行操作自增ID --同步修改远程的数据 -- 更新 A update RemoteServ.WeSafe.dbo.Area set a.AreaName=b.AreaName, a.UperlerdAreaID=b.UperlerdAreaID, a.UpdateTime=b.UpdateTime from RemoteServ.WeSafe.dbo.Area a, Area b where A.GUID = B.GUID and A.UpdateTime < B.UpdateTime and a.SiteID=22 -- 更新 B update dbo.Area set AreaName=b.AreaName, UperlerdAreaID=b.UperlerdAreaID, UpdateTime=b.UpdateTime from Area A,RemoteServ.WeSafe.dbo.Area B where A.GUID = B.GUID and A.UpdateTime < B.UpdateTime and a.SiteID=22 SET IDENTITY_INSERT Area OFF
引用 3 楼 jinfengyiye 的回复:
[quote=引用 2 楼 jinfengyiye 的回复:] UPDATE a SET a.remark=b.remark FROM t1 a JOIN ( SELECT *,rn=ROW_NUMBER() OVER(PARTITION BY id ORDER BY dt desc) FROM t2 ) b ON a.id=b.id AND b.rn=1 and a.t<b.dt 如果有多条时用这个,如果都只有一条可以按楼上的处理。
改一下条件[/quote]
gw6328 2017-03-13
  • 打赏
  • 举报
回复
引用 2 楼 jinfengyiye 的回复:
UPDATE a SET a.remark=b.remark FROM t1 a JOIN ( SELECT *,rn=ROW_NUMBER() OVER(PARTITION BY id ORDER BY dt desc) FROM t2 ) b ON a.id=b.id AND b.rn=1 and a.t<b.dt 如果有多条时用这个,如果都只有一条可以按楼上的处理。
改一下条件
gw6328 2017-03-13
  • 打赏
  • 举报
回复
UPDATE a SET a.remark=b.remark FROM t1 a JOIN ( SELECT *,rn=ROW_NUMBER() OVER(PARTITION BY id ORDER BY dt desc) FROM t2 ) b ON a.id=b.id AND b.rn=1 如果有多条时用这个,如果都只有一条可以按楼上的处理。
卖水果的net 2017-03-13
  • 打赏
  • 举报
回复
-- 更新 A update A set A.uptime = B.uptime from A, B where A.ID = B.ID and A.uptime < B.uptime -- 更新 B update B.set A.uptime = A.uptime from A, B where A.ID = B.ID and B.uptime < A.uptime

6,129

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧